plasticBottle's blog

By plasticBottle, history, 8 years ago, In English

I recently solved a practice problem called Chores making use of 1-indexed array. When I ran it on codeblocks it was giving the right answer but then I submitted and got a WA (even the custom invocation was giving wrong). I think that the judge used 0-indexed array by default.

This is the link to that submission: http://mirror.codeforces.com/contest/169/submission/18770974

Then I changed the code to 0-indexed and it passed. Is this a problem with Codeforces in general or is it a bug just this time?

This is the link to the AC answer: http://mirror.codeforces.com/contest/169/submission/18770997

I code in C++ FYI.

Thank you for replying!

  • Vote: I like it
  • -19
  • Vote: I do not like it

| Write comment?
»
8 years ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

Change sort(arr,arr+n+1); to sort(arr+1,arr+n+1);

Accepted

  • »
    »
    8 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Oh, I see.

    why doesnt the other one work? I mean, arr[0] will be assigned to 0 anyway right so it shouldn't matter. Or does it not happen that way with this judge? As i mentioned it worked fine with codeblocks!

    • »
      »
      »
      8 years ago, # ^ |
      Rev. 3   Vote: I like it 0 Vote: I do not like it

      Array is not global so arr[0] will be assigned garbage value.

      Click

      • »
        »
        »
        »
        8 years ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        I can understand that the arr[0] (and others) will be assigned to some garbage value during declaration. Also, I know that global declaration assigns everything to zero in the array. But if my cpp teacher were right (:P) when you declare an array with some size and give some value to some index, then rest of the array will become zero. If my memory is right that worked in some question that I solved before but can't remember where. Plus i mentioned codeblocks as well.

        Maybe Codeforces doesn't take it that way? No?

        • »
          »
          »
          »
          »
          8 years ago, # ^ |
            Vote: I like it +1 Vote: I do not like it

          The rest of the array is initialized to 0 when you use a brace initializer in the declaration e.g. int a[5] = {2}.

»
8 years ago, # |
Rev. 2   Vote: I like it +1 Vote: I do not like it

You didn't sort it the right way and included the value at index 0:

sort(arr + 1, arr + n + 1)

AC

EDIT: OH 3 comments while I was typing! Very fast internet :D