Submission #895248

# Submission time Handle Problem Language Result Execution time Memory
895248 2023-12-29T16:42:27 Z Irate Hotter Colder (IOI10_hottercolder) C++14
78 / 100
421 ms 8048 KB
#include<bits/stdc++.h>
using namespace std;
int Guess(int n);
// int lastG = -1, X;
// int cnt = 0;
// int Guess(int n){
//     cnt++;
//     // cout << "GUESS: " << lastG << ", " << n << '\n';
//     if(lastG == -1 || abs(X - lastG) == abs(X - n)){
//         lastG = n;
//         return 0;
//     }
//     if(abs(X - lastG) > abs(X - n)){
//         lastG = n;
//         return 1;
//     }
//     lastG = n;
//     return -1;
// }
int HC(int n){
    int l = 1, r = n;
    int last = 1;
    Guess(1);
    while(l < r){
        int mid = (l + r) >> 1;
        // cout << l << ", " << r << ": " << last << '\n';
        if(last == l){
            int num = Guess(r);
            last = r;
            // cout << "NUM: " << num << '\n';
            if(num == -1){
                if((l + r) % 2)r = mid;
                else r = mid - 1;
                if(l == r)return l;
                Guess(l);
                last = l;
            }
            else if(num == 1){
                l = mid + 1;
                if(l == r)return l;
            }
            else{
                return (l + r) >> 1;
            }
        }
        else{
            int num = Guess(l);
            last = l;
            // cout << "NUM: " << num << '\n';
            if(num == 1){
                if((l + r) % 2)r = mid;
                else r = mid - 1;
                if(l == r)return l;
            }
            else if(num == -1){
                l = mid + 1;
                if(l == r)return l;
                Guess(l);
                last = l;
            }
            else return (l + r) >> 1;
        }
    }
    return l;
}
// int main(){
//     int COUNTER = 0;
//     for(int i = 1;i <= 500;++i){
//         for(int j = 1;j <= i;++j){
//             X = j;
//             cnt = 0;
//             lastG = -1;
//             int found_num = HC(i);
//             if(found_num != j){
//                 cout << "Wrong Answer: " << i << ", " << j << '\n';
//                 cout << "FOUND: " << found_num << '\n';
//                 break;
//             }
//             else if(cnt > 15){
//                 COUNTER++;
//                 cout << i << ", " << j << ": " << cnt << '\n';
//             }
//         }
//     }
//     cout << COUNTER;
// }
# Verdict Execution time Memory Grader output
1 Correct 18 ms 6744 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 17 ms 6748 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 18 ms 6748 KB Output is correct
# Verdict Execution time Memory Grader output
1 Partially correct 421 ms 8048 KB Output is partially correct - alpha = 0.115384615385