Submission #4529

#TimeUsernameProblemLanguageResultExecution timeMemory
4529tncks0121Treasure (different grader from official contest) (CEOI13_treasure2)C++98
44 / 100
0 ms1400 KiB
#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)

grader.c: In function 'int main()':
grader.c:63:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         my_assert(strlen(A[i]+1) == N, "each line of the map must contain N zeroes or ones (before loop)");
                                  ^
#Verdict Execution timeMemoryGrader output
Fetching results...