# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1015933 | 2024-07-07T05:50:52 Z | hotboy2703 | The Big Prize (IOI17_prize) | C++17 | 1000 ms | 3416 KB |
#include "prize.h" #include<bits/stdc++.h> using namespace std; using ll = long long; #define pll pair <ll,ll> #define fi first #define se second #define MP make_pair #define sz(a) (ll((a).size())) #define BIT(mask,i) (((mask) >> (i))&1) #define MASK(i) (1LL << (i)) const ll MAXN = 2e5+100; pll a[MAXN]; ll ans = -1; ll req = 0; void query(ll i){ if (a[i].fi==-1){ vector <int> tmp = ask(i); a[i] = MP(tmp[0],tmp[1]); if (a[i].fi+a[i].se==0)ans = i; } } void solve(ll l,ll r,ll l1,ll r1){ ll k=r1-l1; if (k==0)return; ll mid = (l + r) >> 1; ll id = -1; for (ll i = 0;i < k;i ++){ ll cur_mid = mid + ((i+1)/2) * (i%2?1:-1); query(cur_mid); if (a[cur_mid].fi+a[cur_mid].se==req){ id = i; break; } } if (id==-1)return; ll mid_l,mid_r; ll L,R; if (id%2){ mid_r = mid + ((id+1)/2); mid_l = mid - ((id-1)/2); R = a[mid_r].fi; L = R-id; } else{ mid_r = mid + (id/2); mid_l = mid - (id/2); L = a[mid_l].fi; R = L+id; } solve(l,mid_l-1,l,L); solve(mid_r+1,r,R,r); } int find_best(int n) { memset(a,-1,sizeof a); // req = 3; for (ll i = 0;i < min(500,n);i ++){ query(i); req = max(a[i].fi+a[i].se,req); } solve(0,n-1,0,req); return ans; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Execution timed out | 3021 ms | 3416 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Execution timed out | 3021 ms | 3416 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |