# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
407345 | 2021-05-18T18:55:37 Z | peuch | 고대 책들 (IOI17_books) | C++17 | 0 ms | 0 KB |
#include "prize.h" #include<bits/stdc++.h> using namespace std; int find_best(int n) { vector<vector<int> > a(n); for(int i = 0; i < n; i++){ if(a[i].empty()) a[i] = ask(i); if(a[i][0] == 0 && a[i][1] == 0) return i; else if(n - a[i][0] - a[i][1] > 500){ int ini = i, fim = n - 1; while(ini != fim){ int mid = (ini + fim) >> 1; if(a[mid].empty()) a[mid] = ask(mid); if(a[mid][0] == 0 && a[mid][1] == 0) return i; if(a[mid][0] + a[mid][1] != a[i][0] + a[i][1]) mid = fim - 1; else if(a[mid][0] == a[i][0]) mid = ini; else mid = fim - 1; } i = ini; } } return n - 1; }