Submission #129877

#TimeUsernameProblemLanguageResultExecution timeMemory
129877ygh0410Treasure (different grader from official contest) (CEOI13_treasure2)C++11
17 / 100
2 ms380 KiB
#include "treasure.h"
#include <cstdio>

void findTreasure(int N) {
	int ccnt = countTreasure(1, 1, N, N);
	int rcnt;
	int cnt;
	int visited[105][105];

	for (int i = 1; i <= N; i++) {
		for (int j = 1; j <= N; j++) {
			visited[i][j] = false;
		}
	}


	for (int i = N - 1; i >= 1; i--)
	{
		cnt = countTreasure(1, 1, N, i);
		//		printf("%d %d\n", ccnt,cnt);
		if (cnt < ccnt)
		{
			rcnt = ccnt - cnt;
			for (int j = N - 1; j >= 1; j--) {
				if (rcnt == 0)
					break;
				if (countTreasure(1, i + 1, j, i + 1) < rcnt)
				{
					visited[j + 1][i + 1] = true;
					rcnt--;
				}
			}
			if (rcnt > 0)
				visited[1][i + 1] = true;
		}
		ccnt = cnt;
	}
	if (ccnt > 0)
	{
		for (int j = N - 1; j >= 1; j--) {
			if (ccnt == 0)
				break;
			if (countTreasure(1, 1, j, 1) < ccnt)
			{
				visited[j + 1][1] = true;
				ccnt--;
			}
		}
		if (ccnt > 0)
			visited[1][1] = true;
	}


	for (int i = 1; i <= N; i++) {
		for (int j = 1; j <= N; j++) {
			if (visited[i][j])
				Report(i, j);
		}
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...