Submission #678167

#TimeUsernameProblemLanguageResultExecution timeMemory
678167Cross_RatioLand of the Rainbow Gold (APIO17_rainbow)C++14
11 / 100
15 ms852 KiB
#include "rainbow.h" #include <bits/stdc++.h> using namespace std; bool on[55][55]; int R, C; void init(int _R, int _C, int sr, int sc, int M, char *S) { int i, j; R = _R, C = _C; for(i=1;i<=R;i++) { for(j=1;j<=C;j++) on[i][j] = true; } on[sr][sc] = false; for(i=0;i<M;i++) { if(S[i]=='N') sr--; if(S[i]=='S') sr++; if(S[i]=='W') sc--; if(S[i]=='E') sc++; on[sr][sc] = false; } } int dx[4] = {0, 0, 1, -1}; int dy[4] = {1, -1, 0, 0}; bool in(int x, int y) { return 1<=x&&x<=R&&1<=y&&y<=C; } bool vis[55][55]; int dfs(int x, int y) { vis[x][y] = true; for(int k = 0; k < 4; k++) { int x2 = x + dx[k], y2 = y + dy[k]; if(in(x2, y2) && !vis[x2][y2] && on[x2][y2]) { dfs(x2, y2); } } return 1; } int colour(int ar, int ac, int br, int bc) { int i, j; for(i=1;i<=R;i++) { for(j=1;j<=C;j++) { if(i<ar||i>br||j<ac||j>bc) vis[i][j] = true; else vis[i][j]= false; } } int sum = 0; for(i=ar;i<=br;i++) { for(j=ac;j<=bc;j++) { if(on[i][j]&&!vis[i][j]) { sum += dfs(i, j); } } } return sum; }
#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...