제출 #129895

#제출 시각아이디문제언어결과실행 시간메모리
129895ygh0410Treasure (different grader from official contest) (CEOI13_treasure2)C++11
69 / 100
2 ms504 KiB
#include "treasure.h"


int Treasure[105][105];
int cnt[105][105];

void findTreasure(int N) {
	int m = N / 2;
	for (int i = 1; i <= m+1; i++) {
		for (int j = 1; j <= m+1; j++) {
			Treasure[i][j] = countTreasure(i, j, N, N);
		}
	}
	for (int i = 1; i <= m; i++) {
		for (int j = 1; j <= m; j++) {
			cnt[i][j] = Treasure[i][j] - Treasure[i + 1][j] - Treasure[i][j + 1] + Treasure[i + 1][j + 1];
		}
	}
	for (int i = 1; i <= m + 1; i++) {
		for (int j = m; j <= N; j++) {
			Treasure[i][j] = countTreasure(i, 1, N, j);
		}
	}
	for (int i = 1; i <= m; i++) {
		for (int j = m+1; j <= N; j++) {
			cnt[i][j] = Treasure[i][j] - Treasure[i+1][j] - Treasure[i][j-1] + Treasure[i + 1][j - 1];
		}
	}
	for (int i = m; i <= N; i++) {
		for (int j = 1; j <= m + 1; j++) {
			Treasure[i][j] = countTreasure(1, j, i, N);
		}
	}
	for (int i = m+1; i <= N; i++) {
		for (int j = 1; j <= m; j++) {
			cnt[i][j] = Treasure[i][j] - Treasure[i - 1][j] - Treasure[i][j + 1] + Treasure[i - 1][j + 1];
		}
	}
	for (int i = m; i <= N; i++) {
		for (int j = m; j <=N; j++) {
			Treasure[i][j] = countTreasure(1, 1, i, j);
		}
	}
	for (int i = m+1; i <= N; i++) {
		for (int j = m+1; j <= N; j++) {
			cnt[i][j] = Treasure[i][j] - Treasure[i - 1][j] - Treasure[i][j - 1] + Treasure[i - 1][j - 1];
		}
	}
	
	for (int i = 1; i <= N; i++) {
		for (int j = 1; j <= N; j++) {
			if (cnt[i][j])
				Report(i, j);
		}
	}


}
#Verdict Execution timeMemoryGrader output
Fetching results...