Submission #554880

#TimeUsernameProblemLanguageResultExecution timeMemory
554880kevinxiehkHotter Colder (IOI10_hottercolder)C++17
90 / 100
591 ms8104 KiB
#include <bits/stdc++.h> #include "grader.h" #define mp make_pair #define pb emplace_back #define fi first #define se second using namespace std; int Guess (int x); int last = 1; int ans; int cnt = 0; // int Guess (int x) { // cnt++; // // cout << x << '\n'; // if(abs(last - ans) == abs(x - ans)) return 0; // else if(abs(last - ans) > abs(x - ans)) return 1; // return -1; // } int HC(int n){ int l = 1, r = n; int init = n / 3; last = max(1, init); last = min(last, n); Guess(last); while(l < r) { // cout << l << ' ' << r << '\n'; // if(last != l && last != r) { // Guess(l); last = l; // } int mid = (l + r) / 2; int now = mid * 2 - last; if(now == last) now++; // now = min(now, n); now = max(now, 1); if(now > n) { now = (r * 2 + l) / 3; } if(now < 1) { now = (r + l * 2) / 3; } int k = Guess(now); // last = l ^ r ^ last; if(k == 0) { return (last + now) / 2; } else if((k == 1 && now > last) || (k == -1 && now < last)) { l = max(l, (last + now) / 2 + 1); } else { r = min(r, (last + now + 1) / 2 - 1); } last = now; } return l; } // int main() { // int mx = 0; // for(int i = 1; i <= 500; i++) { // cnt = 0; // ans = i; // if(HC(500) != i) cout << i << '\n'; // mx = max(mx, cnt); // } // cout << mx << '\n'; // }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...