Take a look at the end of these two programs:
https://atcoder.jp/contests/abc188/submissions/19361247
https://atcoder.jp/contests/abc188/submissions/19361394
One is correct and the other is not, even though in theory the one with std::min should be equivalent, since the first values of the arrays are all pairwise distinct.
EDIT: std::array variable holding fundamental types of local scope is not zero initialized (unlike other containers to my knowledge).
I've initialized array in the second submission and got AC. But I have no idea why your first solution works, it passed in 3 out of 3 tries.
Seriously? Huh, why do you think it is like that, considering the fact, that the array should at least in theory be default initialized with zeores? Oh wait, it isn't?
std::array
declared locally goes on the stack and isn't zero-initialized (as with any locally declared primitive types).std::array
, unlikestd::vector
, does not zero-initialize its elements by default. Usestd::array<T, N> var{};
to zero-initialize.Array uses default initialization.
Oh it says so in the documentation. Thank you, I falsely assumed that like other std containers its elements are also zero initialized.
std::vector
is zero-initialized because its data is allocated on the heap (even if the vector is declared locally).You should read warnings next time. Atcoder shows compilation log right below the code.
Auto comment: topic has been updated by idk321 (previous revision, new revision, compare).