Submission #1181030

#TimeUsernameProblemLanguageResultExecution timeMemory
1181030hamzabcHotter Colder (IOI10_hottercolder)C++20
75 / 100
428 ms8240 KiB
#ifndef LOCAL #include "grader.h" #endif #include <bits/stdc++.h> using namespace std; int max(int a, int b){ if (a > b) return a; return b; } int min(int a, int b){ if (a < b) return a; return b; } int HC(int N){ int l = 1, r = N, gl = max(1, (l + r - 1) >> 1), gr = min(N, gl + 2), k = 0; Guess(gl); int d = Guess(gr); while (l != r){ if (d == 0){ return (gl + gr) >> 1; }else if (d == 1){ if (k == 0){ l = (gl + gr) / 2 + 1; if (min(r, l + r - gr) > gr){ gl = gr; gr = min(r, l + r - gr); d = Guess(gr); k = 1; }else{ gl = min(r, l + r - gr); d = Guess(gl); } }else{ r = (gl + gr - 1) / 2; if (max(l, l + r - gl) < gl){ gr = gl; gl = max(l, l + r - gl); d = Guess(gl); }else{ gr = max(l, l + r - gl); d = Guess(gr); } } k = 1 - k; }else{ if (k == 0){ r = max(1, (gl + gr - 1) / 2); if (gr == gl + 2){ gl = max(l, l + r - gr); d = Guess(gl); }else{ gl = max(l, (l + r - 1) >> 1); gr = min(r, gl + 2); Guess(gl); d = Guess(gr); k = 1; } }else{ l = min(N, (gl + gr) / 2 + 1); if (gr == gl + 2){ gr = min(r, l + r - gl); d = Guess(gr); }else{ gl = max(l, (l + r - 1) >> 1); gr = min(r, gl + 2); Guess(gl); d = Guess(gr); k = 1; } } k = 1 - k; } if (l > r || gl > gr){ cerr << "error " << l << " " << r << " " << gl << " " << gr << endl; exit(-1); } } return l; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...