So I was doing this problem: https://codeforces.net/contest/1490/problem/F. And I got TLE when I use C++11: https://codeforces.net/contest/1490/submission/144339905 . and C++14: https://codeforces.net/contest/1490/submission/144338420 . but AC when using C++20: https://codeforces.net/contest/1490/submission/144339955 . Can anyone tell me why this is happening?
Auto comment: topic has been updated by pgiaminh8368 (previous revision, new revision, compare).
Change
unordered_map
tomap
. Time complexity ofunordered_map
on average isO(1)
but it's worst case complexity isO(n)
https://codeforces.net/contest/1490/submission/144341577
Thank you.
So that mean access element of a unordered_map is faster in C++20?
This is a problem from a Div3 contest, which means that this contest had a 12 hours hacking phase. And unordered_map is known to be vulnerable to adversarially constructed input data, which may hit the worst case time complexity. C++20 isn't better. It's just a newer complier, which probably changed its unordered_map implementation a little a bit. So the old hacks need to be adjusted to successfully target it too. See https://codeforces.net/blog/entry/62393
Thank you.