retrograd's blog

By retrograd, history, 6 days ago, In English,

I was recently trying to solve problem K. Kingdom of Ants on Kattis. However, my submission strangely receives a Memory Limit Exceeded verdict, and I can see no way of achieving that with my code.

Code: https://pastebin.com/0sXQaCdi

Do you guys spot any reasons why the above code would give MLE? Maybe some weird C++ undefined behaviour, or maybe some compiler flaw?

UPDATE: After checking for the (very degenerate) case if there is only one y-coordinate (right between lines 119 and 120), the solution gets Accepted verdict. However, I still don't understand why the initial verdict was MLE, and it was very misleading.

 
 
 
 
  • Vote: I like it
  • +3
  • Vote: I do not like it

»
6 days ago, # |
  Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by retrograd (previous revision, new revision, compare).

»
6 days ago, # |
  Vote: I like it +14 Vote: I do not like it

I think the bug is in initializing the segment tree. It looks like the right bound is initially set to n-2 instead of n-1. The way the init function is defined, this recurses forever instead of RTEing.

  • »
    »
    5 days ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    You are right. I posted this before I realized that there can be degenerate rectangles in the input tests. Stack overflow is indeed a reasonable cause of a MLE verdict. I marked the issue as closed.