Submission #100522

#TimeUsernameProblemLanguageResultExecution timeMemory
100522saleparkTreasure (different grader from official contest) (CEOI13_treasure2)C++14
1 / 100
27 ms512 KiB
#include "treasure.h" bool visit[101][101]; 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++) { visit[i][j] = 1; } } } else { go(a, b, N / 2); } n = countTreasure(a, b + N, a - 1 + N, b - 1 + (2 * N)); if (n == N * N) { for (int i = a; i < a + N; i++) { for (int j = b + N; j < b + (2 * N); j++) { visit[i][j] = 1; } } } 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++) { visit[i][j] = 1; } } } 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++) { visit[i][j] = 1; } } } 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); for (int i = 1; i <= N; i++) { for (int j = 1; j <= N; j++) { if (visit[i][j] == 1) Report(i, j); } } }
#Verdict Execution timeMemoryGrader output
Fetching results...