#include "prize.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> ans[200500];
int mx = -1;
int find(int l, int r){
if(ans[l][0] == ans[r][0]){
return 0;
}
int m = (l + r) >> 1, L = m, R = m + 1;
while(l < L){
ans[L] =ask(L);
if(ans[L][0] + ans[L][1] == mx){
break;
}
if(ans[L][0] + ans[L][1] == 0){
return L;
}
L--;
}
while(r > R){
ans[R] =ask(R);
if(ans[R][0] + ans[R][1] == mx){
break;
}
if(ans[R][0] + ans[R][1] == 0){
return R;
}
R++;
}
return max(find(l, L), find(r, R));
}
int find_best(int n) {
for(int i = 0; i < 35; i++){
ans[i] = ask(i);
if(ans[i][0] + ans[i][1] == 0){
return i;
}
mx = max(mx, ans[i][0] + ans[i][1]);
}
int l = 0, r = n - 1;
while(true){
if(ans[l][0] + ans[l][1] == mx){
break;
}
l++;
}
while(true){
ans[r] = ask(r);
if(ans[r][0] + ans[r][1] == mx){
break;
}
if(ans[r][0] + ans[r][1] == 0){
return r;
}
r--;
}
return find(l, r);
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
15 ms |
9848 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
18 ms |
9920 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |