# |
제출 시각 |
아이디 |
문제 |
언어 |
결과 |
실행 시간 |
메모리 |
61931 |
2018-07-27T05:43:38 Z |
ainta(#1792) |
popa (BOI18_popa) |
C++11 |
|
175 ms |
468 KB |
#include<cstdio>
#include<algorithm>
#include<vector>
#define N_ 1010
#include "popa.h"
using namespace std;
int L[N_], R[N_], C[N_];
int solve(int N, int* Left, int* Right) {
int i, j;
for (i = 0; i < N; i++) {
int b = 0, e = i, r = i, mid;
while (b <= e) {
mid = (b + e) >> 1;
if (query(i, i, mid, i))r = mid, e = mid - 1;
else b = mid + 1;
}
L[i] = r;
b = i, e = N - 1, r = i;
while (b <= e) {
mid = (b + e) >> 1;
if (query(i, i, i, mid))r = mid, b = mid + 1;
else e = mid - 1;
}
R[i] = r;
C[i] = R[i] - L[i];
}
int root = -1;
for (i = 0; i < N; i++) {
Left[i] = Right[i] = -1;
for (j = 0; j < N; j++){
if (C[i] > C[j]) {
if (L[i] == L[j] && (Left[i] == -1 || C[j] > C[Left[i]]))Left[i] = j;
if (R[i] == R[j] && (Right[i] == -1 || C[j] > C[Right[i]]))Right[i] = j;
}
}
if (C[i] == N - 1)root = i;
}
return root;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
73 ms |
248 KB |
Output is correct |
2 |
Correct |
63 ms |
468 KB |
Output is correct |
3 |
Correct |
64 ms |
468 KB |
Output is correct |
4 |
Correct |
53 ms |
468 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
175 ms |
468 KB |
not a valid binary tree |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
29 ms |
468 KB |
too many queries |
2 |
Halted |
0 ms |
0 KB |
- |