#include<bits/stdc++.h>
using namespace std;
const int L=60;
bool mark[L][L],W[L][L];
void init(int A,int B,int sx,int sy,int N,char* S){
W[sx][sy] = 1;
for(int i=0;i<N;i++){
char c = S[i];
if(c == 'N')
sx--;
if(c == 'S')
sx++;
if(c == 'W')
sy--;
if(c == 'E')
sy++;
W[sx][sy] = 1;
}
/*
for(int i=1;i<=A;i++){
for(int j=1;j<=B;j++){
cout<<W[i][j];
}
cout<<endl;
}
*/
}
void dfs(int x,int y,int x1,int y1,int x2,int y2){
if(x>x2 or x<x1 or y>y2 or y<y1 or mark[x][y] or W[x][y])
return;
mark[x][y] = 1;
dfs(x+1,y,x1,y1,x2,y2);
dfs(x,y+1,x1,y1,x2,y2);
dfs(x-1,y,x1,y1,x2,y2);
dfs(x,y-1,x1,y1,x2,y2);
}
int colour(int x1,int y1,int x2,int y2){
for(int i=x1;i<=x2;i++){
for(int j=y1;j<=y2;j++){
mark[i][j] = 0;
}
}
int ans = 0;
for(int i=x1;i<=x2;i++){
for(int j=y1;j<=y2;j++){
if(!mark[i][j] and !W[i][j]){
ans++;
dfs(i,j,x1,y1,x2,y2);
}
}
}
return ans;
}
/*
int main(){
int A,B,N,q,sx,sy;
string inp;
char I[100];
cin>>A>>B>>N>>q;
cin>>sx>>sy;
if(N)
cin>>inp;
for(int i=0;i<N;i++){
I[i] = inp[i];
}
init(A,B,sx,sy,N,I);
for(int i=1;i<=q;i++){
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
cout<<colour(x1,y1,x2,y2)<<endl;
}
}
*/
# | 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... |