Submission #137545

#TimeUsernameProblemLanguageResultExecution timeMemory
137545Mahdi_JfriThe Big Prize (IOI17_prize)C++14
0 / 100
16 ms9976 KiB
#include "prize.h" #include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back const int maxn = 2e5 + 20; vector<int> res[maxn] , candid; int mx; vector<int> reval(int k) { if(!res[k].empty()) return res[k]; res[k] = ask(k); while(res[k][0] + res[k][1] > mx) cout << 1/0; return res[k]; } void solve(int l , int r) { while(l < r) { auto tmp = reval(l); if(tmp[0] + tmp[1] != mx) candid.pb(l++); else break; } while(l < r) { r--; auto tmp = reval(r); if(tmp[0] + tmp[1] != mx) candid.pb(r); else break; } if(l >= r) return; reval(l); reval(r); if(res[r][0] - res[l][0] == 0) return; int m = (l + r) / 2; solve(m , r + 1); solve(l , m); } int find_best(int n) { if(n <= 5000) { for(int i = 0; i < n; i++) { std::vector<int> res = ask(i); if(res[0] + res[1] == 0) return i; } } for(int i = 0; i < 1000; i++) { vector<int> tmp = reval(i); mx = max(mx , tmp[0] + tmp[1]); } solve(0 , n); for(auto x : candid) { auto tmp = reval(x); if(tmp[0] + tmp[1] == 0) return x; } return -85; }

Compilation message (stderr)

prize.cpp: In function 'std::vector<int> reval(int)':
prize.cpp:21:45: warning: division by zero [-Wdiv-by-zero]
  while(res[k][0] + res[k][1] > mx) cout << 1/0;
                                            ~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...