Блог пользователя plasticBottle

Автор plasticBottle, история, 8 лет назад, По-английски

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://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://codeforces.com/contest/169/submission/18770997

I code in C++ FYI.

Thank you for replying!

  • Проголосовать: нравится
  • -19
  • Проголосовать: не нравится

»
8 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

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

Accepted

  • »
    »
    8 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    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 лет назад, # ^ |
      Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

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

      Click

      • »
        »
        »
        »
        8 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        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 лет назад, # ^ |
            Проголосовать: нравится +1 Проголосовать: не нравится

          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 лет назад, # |
Rev. 2   Проголосовать: нравится +1 Проголосовать: не нравится

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