Submission #554874

# Submission time Handle Problem Language Result Execution time Memory
554874 2022-04-29T14:10:32 Z kevinxiehk Hotter Colder (IOI10_hottercolder) C++17
89 / 100
637 ms 8168 KB
#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 * 0.35;
 
    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 - (r - last) / 3;
        }
        if(now < 1) {
            now = l + (last - l) / 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 time Memory Grader output
1 Correct 22 ms 1236 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 22 ms 1296 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 23 ms 1180 KB Output is correct
# Verdict Execution time Memory Grader output
1 Partially correct 637 ms 8168 KB Output is partially correct - alpha = 0.571428571429