Submission #1214570

#TimeUsernameProblemLanguageResultExecution timeMemory
1214570exoworldgdThe Big Prize (IOI17_prize)C++20
0 / 100
0 ms404 KiB
#include "prize.h" #include <bits/stdc++.h> using namespace std; map<int,vector<int>> mp; vector<int> q(int i) { if (mp.count(i)) return mp[i]; return mp[i] = ask(i); } int dfs(int l, int r, int pl, int pr) { if (l > r) return -1; int m = l+(r-l)/2; vector<int> res = q(m); int cl=res[0], cr=res[1]; if (!(cl+cr)) return m; if (cl+cr < pl+pr) { int ans = dfs(l,m-1,pl,cr); if (ans != -1) return ans; return dfs(m+1,r,cl,pr); } if (cl == pl) return dfs(m+1,r,cl,pr); return dfs(l,m-1,pl,cr); } int find_best(int n) { mp.clear(); vector<int> lres = q(0), rres = q(n-1); if (!(lres[1]+lres[0])) return 0; if (!(rres[0]+rres[1] == 0)) return n-1; return dfs(1,n-2,lres[0],rres[1]); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...