#include "secret.h"
const int MAXN = 1e3+1;
int SRQ[MAXN][MAXN];
int Arrl[MAXN];
int globul;
//int Secret(int X, int Y);
void initTree(int l, int r){
int mid = (l+r)>>1;
SRQ[mid][mid] = Arrl[mid];
SRQ[mid+1][mid+1] = Arrl[mid+1];
for (int i = mid-1; i >= l; i--){
SRQ[mid][i] = Secret(Arrl[i], SRQ[mid][i+1]);
}
for (int i = mid+2; i <= r; i++){
SRQ[mid+1][i] = Secret(Arrl[i], SRQ[mid+1][i-1]);
}
if (l < mid)initTree(l, mid);
if (r > mid+1)initTree(mid+1, r);
}
int followInit(int wL, int wR){
int a = 0, b = globul-1;
while (a < b){
if (a == b)return SRQ[a][b];
int mid = (a+b)>>1;
if (mid >= wL && mid < wR)return Secret(SRQ[mid][wL], SRQ[mid+1][wR]);
if (mid == wR)return SRQ[mid][wL];
if (mid >= wL){
b = mid;
} else {
a = mid+1;
}
}
return -1;
}
void Init(int N, int A[]){
for (int i = 0; i < N; i++){
Arrl[i] = A[i];
}
globul = N;
initTree(0, N-1);
}
int Query(int L, int R){
return followInit(L, R);
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
100 ms |
7508 KB |
Wrong Answer: Query(222, 254) - expected : 34031541, actual : 809782271. |
2 |
Incorrect |
96 ms |
7624 KB |
Wrong Answer: Query(60, 375) - expected : 669221184, actual : 68749376. |
3 |
Incorrect |
106 ms |
7500 KB |
Wrong Answer: Query(211, 401) - expected : 674373968, actual : 136349820. |
4 |
Incorrect |
372 ms |
8308 KB |
Wrong Answer: Query(90, 497) - expected : 397934825, actual : 650789536. |
5 |
Incorrect |
371 ms |
8276 KB |
Wrong Answer: Query(587, 915) - expected : 752404486, actual : 377506838. |
6 |
Incorrect |
372 ms |
8204 KB |
Wrong Answer: Query(738, 741) - expected : 983692994, actual : 61461050. |
7 |
Incorrect |
360 ms |
8276 KB |
Wrong Answer: Query(84, 976) - expected : 742463504, actual : 687550570. |
8 |
Incorrect |
357 ms |
8076 KB |
Wrong Answer: Query(58, 987) - expected : 20022464, actual : 145923264. |
9 |
Incorrect |
371 ms |
8072 KB |
Wrong Answer: Query(33, 967) - expected : 676869696, actual : 18757135. |
10 |
Incorrect |
367 ms |
8176 KB |
Wrong Answer: Query(116, 961) - expected : 68487362, actual : 70590726. |