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;
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 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... |