Submission #99033

#TimeUsernameProblemLanguageResultExecution timeMemory
99033wjdclgns12보물 찾기 (CEOI13_treasure2)C++14
0 / 100
1089 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(r1 + 1, c1 + 1, (r1 + r2) / 2 + 1, c2 + 1);
		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...