I'm trying the problem: 1923D - Slimes
Problem Summary: an element a
-> a
can take the adjacent element b
if b
is strictly less than a
. After taking b
, a
is increased by b
and b
is removed. For an element, what is the min number of operations need among all other elements to take the element?
Approach: Prefix Sum + Binary Search
Calculate prefix and binary search on the right side to find the closest index where the sum is greater than the curr element. Then reverse the array and do it again (to search on the left side). Note: there must at least two unique element which is handled by map.
Submission: 284865983
What's wrong in my code?
Can anyone please help me to debug?
If you encounter WA on test 2, you can use the following techniques to find the wrong case.
In this case, the wrong output can be seen in the result (the 53th line) and the case pattern can be easily found. After simple calculation, we can reach the wrong case.
Your code mishandles the case where duplicates gather in the middle of the array. In the wrong case you encounter:
Your code thinks the 3th slime can eat 2th slime and then eat 4th slime, which is impossible.
Thanks for your help. I really appreciate your time.
Can you please also tell me more about how to find the exact wrong test case?
Like, how can I identify that a particular test case is wrong? What code should I write?