mokoto's blog

By mokoto, history, 8 years ago, In English

Hello, my binary search approach for problem e is , suppose we had played x-1 round and currently at round x , we will check whether we can kill monter in that round x or not , if yes we shift high to curr round — 1 else low to curr round + 1 .

my low range query is = 2 , since i alredy checked for round 1 , trivially . and high range r = (h / abs(sum) ) +1. where sum is my vector sum .

But the approach is continuously giving WA at tc : 92 .

https://codeforces.me/contest/1141/submission/51547489

where my approach is wrong .

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

| Write comment?
»
8 years ago, hide # |
 
Vote: I like it +5 Vote: I do not like it

Here's a tip to debug your code. Try asserting an invariant. Then, if you get runtime error, you will know where your logic fails.

»
8 years ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

Just a first thought: doesn't std::accumulate(iter, iter, int) return an int?

  • »
    »
    8 years ago, hide # ^ |
    Rev. 2  
    Vote: I like it 0 Vote: I do not like it

    Thank you very much mnbvmar

    i changed it to long long instead of using accumulator and it passed..

    i spent 2 hrs yesterday on debugging it.. you taught me a new thing where to use accumulator.. Thanks to you ... for the help..

    ac code

    • »
      »
      »
      8 years ago, hide # ^ |
       
      Vote: I like it +5 Vote: I do not like it

      You could as well replace long long sum = accumulate(v.begin() , v.end() , 0); by long long sum = accumulate(v.begin() , v.end() , 0ll); and it would work