제출 #895244

#제출 시각아이디문제언어결과실행 시간메모리
895244IrateHotter Colder (IOI10_hottercolder)C++14
79 / 100
606 ms8244 KiB
#include<bits/stdc++.h> using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); 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; int R = rng() % 2; if(R % 2 == 0){ last = 1; Guess(1); } else{ last = n; Guess(n); } 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; int R = rng() % 2; if(R == 0){ Guess(l); last = l; } else{ Guess(r); last = r; } } 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; int R = rng() % 2; if(R == 0){ Guess(r); last = r; } else{ 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...