제출 #99032

#제출 시각아이디문제언어결과실행 시간메모리
99032wjdclgns12보물 찾기 (CEOI13_treasure2)C++14
0 / 100
3 ms384 KiB
#include "treasure.h"

int cnt = 0;
int resultX[101];
int resultY[101];

int grid[101][101];

void findFunc(int r1, int c1, int r2, int c2, int trs)
{
	int area = (r2 - r1 + 1) * (c2 - c1 + 1);
	if (trs == 0) return;
	if (trs == area)
	{
		for (int i = r1; i <= r2; i++) for (int j = c1; j <= c2; j++)
		{
			resultX[cnt] = i;
			resultY[cnt] = j;
			cnt++;
		}
		return;
	}

	if (r1 != r2)
	{
		int half = countTreasure(0, c1, (r1 + r2) / 2, c2);
		findFunc(0, c1, (r1 + r2) / 2, c2, half);
		findFunc((r1 + r2) / 2 + 1, c1, r2, c2, trs - half);
	}

}

void findTreasure(int N) {
	for (int i = 0; i < 101; i++) for (int j = 0; j < 101; j++)
		grid[i][j] = 0;

	findFunc(0, 0, N - 1, N - 1, countTreasure(1, 1, N, N));

	for (int i = 0; i < cnt; i++)
	{
		Report(resultX[i] + 1, resultY[i] + 1);
	}

}
#Verdict Execution timeMemoryGrader output
Fetching results...