Submission #4539

# Submission time Handle Problem Language Result Execution time Memory
4539 2013-10-23T07:53:30 Z ainta Treasure (different grader from official contest) (CEOI13_treasure2) C++
80 / 100
0 ms 1420 KB
#include "treasure.h"
int D[4][110][110],Mid,n,w[110][110],Sx[110],Sy[110];
int mx(int a,int b){return a<b?b:a;}
int mn(int a,int b){return a<b?a:b;}
void Do(int a){
	int x,y,x1,y1,x2,y2,i,j;
	if(a<2)x=1,x1=Mid,x2=n;
	else x=n,x1=1,x2=Mid;
	if(a%2==0)y=1,y1=Mid,y2=n;
	else y=n,y1=1,y2=Mid;
	for(i=x1;i<=x2;i++){
		for(j=y1;j<=y2;j++){
			if(mn(x,i) == 1 && mx(x,i) == n && mn(y,j) == 1 && mx(y,j) == n) continue;
			D[a][i][j]=countTreasure(mn(x,i),mn(y,j),mx(x,i),mx(y,j));
		}
	}
}
void findTreasure (int N) {
	int i,j,s;
	n=N,Mid=(N+1)/2;
	D[0][n][n]=D[1][n][1]=D[2][1][n]=D[3][1][1]=countTreasure(1,1,n,n);
	Do(0);
	Do(1);
	Do(2);
	Do(3);
	for(i=Mid+1;i<=n;i++)
		for(j=Mid+1;j<=n;j++)
			w[i][j]=(D[0][i][j]-D[0][i][j-1]) - (D[0][i-1][j]-D[0][i-1][j-1]);
	for(i=Mid+1;i<=n;i++)
		for(j=1;j<Mid;j++)
			w[i][j]=(D[1][i][j]-D[1][i][j+1]) - (D[1][i-1][j]-D[1][i-1][j+1]);
	for(i=1;i<Mid;i++)
		for(j=Mid+1;j<=n;j++)
			w[i][j]=(D[2][i][j]-D[2][i][j-1]) - (D[2][i+1][j]-D[2][i+1][j-1]);
	for(i=1;i<Mid;i++)
		for(j=1;j<Mid;j++)
			w[i][j]=(D[3][i][j]-D[3][i][j+1]) - (D[3][i+1][j]-D[3][i+1][j+1]);
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			Sx[i]+=w[i][j],Sy[j]+=w[i][j];
	for(i=1;i<Mid;i++){
		w[Mid][i]=(D[3][1][i]-D[3][1][i+1])-Sy[i];
		w[i][Mid]=(D[3][i][1]-D[3][i+1][1])-Sx[i];
	}
	for(i=Mid+1;i<=n;i++){
		w[Mid][i]=(D[0][n][i]-D[0][n][i-1])-Sy[i];
		w[i][Mid]=(D[0][i][n]-D[0][i-1][n])-Sx[i];
	}
	s=0;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			s+=w[i][j];
	w[Mid][Mid]=D[0][n][n]-s;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			if(w[i][j])Report(i,j);
}

Compilation message

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 time Memory Grader output
1 Incorrect 0 ms 1420 KB Output is partially correct - N = 5, K = 357, score = 8
2 Incorrect 0 ms 1420 KB Output is partially correct - N = 10, K = 4993, score = 8
3 Incorrect 0 ms 1420 KB Output is partially correct - N = 15, K = 23997, score = 8
4 Incorrect 0 ms 1420 KB Output is partially correct - N = 16, K = 31006, score = 8
5 Incorrect 0 ms 1420 KB Output is partially correct - N = 55, K = 4088557, score = 8
6 Incorrect 0 ms 1420 KB Output is partially correct - N = 66, K = 8449681, score = 8
7 Incorrect 0 ms 1420 KB Output is partially correct - N = 77, K = 15611541, score = 8
8 Incorrect 0 ms 1420 KB Output is partially correct - N = 88, K = 26585326, score = 8
9 Incorrect 0 ms 1420 KB Output is partially correct - N = 99, K = 42517497, score = 8
10 Incorrect 0 ms 1420 KB Output is partially correct - N = 100, K = 44260198, score = 8