kaizen19's blog

By kaizen19, history, 7 months ago, In English,

I am trying to solve DIV2 D problem of Round 197 using segment tree. But on test case 7, I am getting runtime error. Can some one please review my code to find the mistake ? Thanks in advance. My Code — 51594716

 
 
 
 
  • Vote: I like it
  • -9
  • Vote: I do not like it

»
7 months ago, # |
  Vote: I like it 0 Vote: I do not like it

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

»
7 months ago, # |
  Vote: I like it +2 Vote: I do not like it

The first thing that struck me — why are you using pow() as if it returns an int? Do you even know how pow() works? read the doc.

  • »
    »
    7 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I am using explicit typecasting by casting double to int. Can you please suggest where it will get wrong. Because, I haven't seen it wrong anywhere and the code got AC by following pajenegod suggestion.

    • »
      »
      »
      7 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      I am using explicit typecasting by casting double to int

      I didn't see that in your code.

      I haven't seen it wrong anywhere

      Undefined behavior means that anything can happen. Including getting AC. You can google for some posts in codeforces regarding the pow() function causing WA due to exactly the same cause.

»
7 months ago, # |
  Vote: I like it +6 Vote: I do not like it

Didn't look too deep into your code but I think I found the error. You use the constant $$$M = 100000$$$ for the size of your array, but you index it with $$$2^n-1$$$ which can be $$$2^{17}-1 = 131071 > M$$$. I tried to change $$$M$$$ to $$$200000$$$ and now everything works.

(Btw don't use cout.tie(Null); as it doesn't do anything, don't know why so many people have that line in their header as it really doesn't do anything as cout isn't tied to anything by default.)

  • »
    »
    7 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Thank you sir. I was looking in code for the mistake but M = 100000 was the mistake which I was ignoring and not looking into. And, I will not use cout.tie(NULL) from now onwards.