Submission #981208

#TimeUsernameProblemLanguageResultExecution timeMemory
981208pccLand of the Rainbow Gold (APIO17_rainbow)C++17
11 / 100
10 ms860 KiB
#include "rainbow.h" #include <bits/stdc++.h> using namespace std; #define pii pair<int,int> #define fs first #define sc second const int mxn = 55; pii dir[] = {{0,1},{0,-1},{1,0},{-1,0}}; int arr[mxn][mxn]; void init(int R, int C, int sr, int sc, int M, char *S) { memset(arr,0,sizeof(arr)); pii now = pii(sr,sc); arr[now.fs][now.sc] = -1; for(int i = 0;i<M;i++){ if(S[i] == 'N')now.fs--; else if(S[i] == 'S')now.fs++; else if(S[i] == 'E')now.sc++; else if(S[i] == 'W')now.sc--; arr[now.fs][now.sc] = -1; } return; } int brr[mxn][mxn]; void dfs(int r,int c,int ar,int ac,int br,int bc){ if(brr[r][c])return; brr[r][c] = 1; for(auto &d:dir){ int nr = r+d.fs,nc = c+d.sc; if(nr<ar||nc<ac||nr>br||nc>bc||brr[nr][nc])continue; dfs(nr,nc,ar,ac,br,bc); } return; } int colour(int ar, int ac, int br, int bc) { int ans = 0; for(int i = ar;i<=br;i++)for(int j = ac;j<=bc;j++)brr[i][j] = arr[i][j]; for(int i = ar;i<=br;i++){ for(int j = ac;j<=bc;j++){ if(!brr[i][j])ans++,dfs(i,j,ar,ac,br,bc); } } return ans; }
#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...