Submission #100521

#TimeUsernameProblemLanguageResultExecution timeMemory
100521saleparkTreasure (different grader from official contest) (CEOI13_treasure2)C++14
0 / 100
2 ms384 KiB
#include "treasure.h"
void go(int a, int b, int N) {
	if (N == 0) {
		return;
	}
	int n = countTreasure(a, b, a - 1 + N, b - 1 + N);
	if (n == N * N) {
		for (int i = a; i < a + N; i++) {
			for (int j = b; j < b + N; j++) {
				Report(i, j);
			}
		}
	}
	else {
		go(a, b, N / 2);
	}
	n = countTreasure(a, b + N, a - 1 + N, b - 1 + (2 * N));
	if (n == (N*N) / 4) {
		for (int i = a; i < a + N; i++) {
			for (int j = b + N; j < b + (2 * N); j++) {
				Report(i, j);
			}
		}
	}
	else go(a, b + N, N / 2);
	n = countTreasure(a + N, b, a - 1 + (2 * N), b - 1 + N);
	if (n == N * N) {
		for (int i = a + N; i < a + (2 * N); i++) {
			for (int j = b; j < b + N; j++) {
				Report(i, j);
			}
		}
	}
	else go(a + N, b, N / 2);
	n = countTreasure(a + N, b + N, a - 1 + (2 * N), b - 1 + (2 * N));
	if (n == N * N) {
		for (int i = a + N; i < a + (2 * N); i++) {
			for (int j = b + N; j < b + (2 * N); j++) {
				Report(i, j);
			}
		}
	}
	else go(a + N, b + N, N / 2);
}
void findTreasure (int N) {
	int cnt = countTreasure(1, 1, N, N);
	if (cnt == 0) return;
	else if (cnt == N * N) {
		for (int i = 1; i <= N; i++) {
			for (int j = 1; j <= N; j++) {
				Report(i, j);
			}
		}
	}
	else go(1, 1, N / 2);
}
#Verdict Execution timeMemoryGrader output
Fetching results...