제출 #129876

#제출 시각아이디문제언어결과실행 시간메모리
129876ygh0410보물 찾기 (CEOI13_treasure2)C++11
16 / 100
3 ms632 KiB
#include "treasure.h"
#include <cstdio>
 
void findTreasure(int N) {
	int ccnt = countTreasure(1, 1, N, N);
	int rcnt;
	int cnt;
	int visited[100][100];
 
	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...