Submission #416868

#TimeUsernameProblemLanguageResultExecution timeMemory
416868Aldas25무지개나라 (APIO17_rainbow)C++14
11 / 100
3066 ms12620 KiB
#include "rainbow.h" #include <bits/stdc++.h> using namespace std; #define FOR(i, a, b) for (int i = (a); i <= (b); i++) #define REP(n) FOR(O, 1, (n)) #define f first #define s second #define pb push_back typedef long long ll; typedef pair<int, int> pii; typedef vector<int> vi; typedef vector<pii> vii; int id (int x, int y) { return x * 1100 + y; } int par[1100*1100]; int find (int a) {return par[a] = par[a]==a ? a : find(par[a]);} bool same (int a, int b) {return find(a) == find(b);} void unite (int a, int b){ a = find(a), b = find(b); if (a == b) return; par[b] = a; } bool grid[1100][1100]; int r, c; void init(int R, int C, int sr, int sc, int M, char *S) { r = R; c = C; int curX = sr, curY = sc; FOR(i, 1, r) FOR(j, 1, c) grid[i][j] = true; grid[curX][curY] = false; FOR(i, 0, M-1) { char c = S[i]; if (c == 'N') curX--; else if (c == 'S') curX++; else if (c == 'W') curY--; else curY++; grid[curX][curY] = false; } } int colour(int ar, int ac, int br, int bc) { FOR(i, ar, br) FOR(j, ac, bc) par[id(i,j)] = id(i,j); FOR(i, ar, br) FOR(j, ac, bc) { if (!grid[i][j]) continue; if (i < br && grid[i+1][j]) unite(id(i,j), id(i+1, j)); if (j < bc && grid[i][j+1]) unite(id(i,j), id(i, j+1)); } int cnt = 0; FOR(i, ar, br) FOR(j, ac, bc) { if (grid[i][j] && find(id(i,j)) == id(i,j)) cnt++; //if (grid[i][j] && find(id(i,j)) == id(i,j)) cout << " parent i = " << i << " j = " << j << endl; } return cnt; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...