# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
4529 | tncks0121 | Treasure (different grader from official contest) (CEOI13_treasure2) | C++98 | 0 ms | 1400 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "treasure.h"
#include <stdio.h>
int A[105][105], B[105][105];
int R[105][105], SL[105][105], SR[105][105];
void findTreasure (int N) {
int i, j;
int T = N/2+1;
for(i = T; i > 0; i--) {
for(j = 1; j <= N; j++) {
A[i][j] = countTreasure(i, 1, N, j);
if(i < T) R[i][j] = A[i][j] - A[i+1][j] - A[i][j-1] + A[i+1][j-1];
}
}
for(i = T; i <= N; i++) {
for(j = 1; j <= N; j++) {
B[i][j] = countTreasure(1, 1, i, j);
if(i > T) R[i][j] = B[i][j] - B[i-1][j] - B[i][j-1] + B[i-1][j-1];
}
}
for(i = 1; i <= T-1; i++) {
for(j = 1; j <= N; j++) SL[i][j] = SL[i-1][j] + SL[i][j-1] - SL[i-1][j-1] + R[i][j];
for(j = N; j > 0; j--) SR[i][j] = SR[i-1][j] + SR[i][j+1] - SR[i-1][j+1] + R[i][j];
}
for(j = 1; j <= N; j++) {
SR[T][j] = B[T][N] - B[T][j-1];
SL[T][j] = B[T][j];
}
for(j = 1; j <= N; j++) {
if(j < T) {
R[T][j] = SR[T][j] - SR[T-1][j] - SR[T][j+1] + SR[T-1][j+1];
}else {
R[T][j] = SL[T][j] - SL[T-1][j] - SL[T][j-1] + SL[T-1][j-1];
}
}
for(i = 1; i <= N; i++) {
//printf("%3d ", i);
for(j = 1; j <= N; j++) {
//printf("%3d",R[i][j]);
if(R[i][j] == 1) Report(i, j);
}
//puts("");
}
}
/*
*/
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |