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<bits/stdc++.h>
using namespace std;
#define N 3005
struct A{
int x,y,st;
};
int ok[2][N][N],di[2][2]={{0,0},{1,-1}},dj[2][2]={{1,-1},{0,0}},cnt[2],sz,ans;
char s[N][N];
bitset<N*N> vis;
bitset<N> ch[N];
queue<A> q;
int main(){
int n,m,i,j,k,x,y,st;
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++){
scanf(" %s",s[i]+1);
}
for(i=1;i<=n;i++){
for(j=3;j<=m;j++){
if(s[i][j-2]=='R'&&s[i][j-1]=='G'&&s[i][j]=='W')ok[0][i][j]=ok[0][i][j-1]=ok[0][i][j-2]=++sz;
}
}
for(j=1;j<=m;j++){
for(i=3;i<=n;i++){
if(s[i-2][j]=='R'&&s[i-1][j]=='G'&&s[i][j]=='W')ok[1][i][j]=ok[1][i-1][j]=ok[1][i-2][j]=++sz;
}
}
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
if(ch[i][j]||(!ok[0][i][j]&&!ok[1][i][j]))continue;
cnt[0]=cnt[1]=0;
if(ok[0][i][j])st=0;
else st=1;
q.push({i,j,st});
ch[i][j]=true;
while(!q.empty()){
x=q.front().x;
y=q.front().y;
st=q.front().st;
q.pop();
if(!vis[ok[st][x][y]])vis[ok[st][x][y]]=true,cnt[st]++;
for(k=0;k<2;k++){
int X=x+di[st][k],Y=y+dj[st][k];
if(X>0&&X<=n&&Y>0&&Y<=m&&!ch[X][Y]&&ok[st][x][y]==ok[st][X][Y])q.push({X,Y,st}),ch[X][Y]=true;
}
if(ok[1-st][x][y]&&!vis[ok[1-st][x][y]])q.push({x,y,1-st}),cnt[1-st]++,vis[ok[1-st][x][y]]=true;
}
ans+=max(cnt[0],cnt[1]);
}
}
printf("%d",ans);
return 0;
}
Compilation message (stderr)
dango_maker.cpp: In function 'int main()':
dango_maker.cpp:17:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
17 | scanf("%d %d",&n,&m);
| ~~~~~^~~~~~~~~~~~~~~
dango_maker.cpp:19:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
19 | scanf(" %s",s[i]+1);
| ~~~~~^~~~~~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |