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!
Change
sort(arr,arr+n+1);
tosort(arr+1,arr+n+1);
Accepted
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!
Array is not global so arr[0] will be assigned garbage value.
Click
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?
The rest of the array is initialized to 0 when you use a brace initializer in the declaration e.g.
int a[5] = {2}
.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