Submission #554899

#TimeUsernameProblemLanguageResultExecution timeMemory
554899kevinxiehkHotter Colder (IOI10_hottercolder)C++17
90 / 100
594 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 * 2 / 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; } // mt19937 mt(time(nullptr)); // int main() { // int mx = 0; // int kk; // cin >> kk; // double t = 0; // for(int w = kk; w <= kk + 1000; w++) { // // int k = (1 << w) / 3; // mx = 0; // for(int i = kk; i <= w + 1000; i++) { // cnt = 0; // int tc = mt() % w + 1; // ans = tc; // if(HC(w) != tc) cout << i << '\n'; // // mx = max(mx, cnt); // if(1.0 * cnt / ceil(log2(3 * w)) > t) cout << 1.0 * cnt / ceil(log2(3 * w)) << ' ' << tc << ' ' << w << '\n'; // t = max(t, 1.0 * cnt / ceil(log2(3 * w))); // } // // cout << k << ' ' << mx << ' ' << 1.0 * mx / w << '\n'; // // t = max(t, 1.0 * mx / w); // } // cout << 75 + 25 * (2 - t) << '\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...