Submission #74547

#TimeUsernameProblemLanguageResultExecution timeMemory
74547SpeedOfMagic보물 찾기 (CEOI13_treasure2)C++17
100 / 100
3 ms716 KiB
#include "treasure.h" #include <bits/stdc++.h> using namespace std; #define rep(a, l, r) for(int a = (l); a < (r); a++) /* 20 00000000000000000001 00000000000000000001 00000001000000000001 00000001000000000001 00000001000001000001 00000000000000000001 00000000000000000001 00111000000000000001 00111000000000000001 00111000000000000001 00000000000000000001 00000000001100000001 00000000000000000001 00000100000000000001 00000000000000000001 00000000000111000001 00000000000000000001 11111111111111111111 00000000000000000001 00000000000000000001 */ /** 01 23 **/ int n; int quarter(int r, int c) { return (r > n / 2) * 2 + (c > n / 2); } void findTreasure (int N) { n = N; int pref[n + 1][n + 1]; memset(pref, 0, sizeof(pref)); for (int i = n; i; i--) for (int j = n; j; j--) if (quarter(i, j) == 0) pref[i][j] = -(pref[n][n] - pref[n][j] - pref[i][n] - countTreasure(i + 1, j + 1, n, n)); else if (quarter(i, j) == 1) pref[i][j] = pref[n][j] - countTreasure(i + 1, 1, n, j); else if (quarter(i, j) == 2) pref[i][j] = pref[i][n] - countTreasure(1, j + 1, i, n); else pref[i][j] = countTreasure(1, 1, i, j); rep(i, 1, n + 1) rep(j, 1, n + 1) if (pref[i][j] - pref[i - 1][j] - pref[i][j - 1] + pref[i - 1][j - 1]) Report(i, j); /* ooxxoo ooxxoo xxxxxx xxxxxx ooxxoo ooxxoo ooxoo ooxoo xxxxx ooxoo ooxoo */ }
#Verdict Execution timeMemoryGrader output
Fetching results...