This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |