Jaewoo Song
Jaewoo Song

Categories

  • Tech

I have usually used map.insert() to put a value in the map and known that this would update automatically if there is already the existing key value.

But I realized that this does not overwrite the overlapping value.


https://www.acmicpc.net/problem/15461


This was a tough problem but I managed to come up with an idea and submitted the solution.

But it kept saying that it is wrong.

After several hours of debugging, I found that the problem was that in the map, values which should be deleted have not been eliminated and new values were added again and again.

idAndValue.insert(pair<int, int> (cow, after));


Originally the algorithm should change the value corresponding to “cow id” into after continuously, but instead, the size of map kept growing.

So I searched about it, and the reason is that map.insert() itself put a value at the beginning but does not update it into new value.

Eventually, I found that map[key] = value adds a new value if there is no key and updates existing value into value if there is key.

It’s so simple…

idAndValue[cow] = after;


I got the correct answer with a shorter and clean code.