답안 #520840

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
520840 2022-01-31T06:54:09 Z krit3379 Dango Maker (JOI18_dango_maker) C++17
33 / 100
263 ms 89744 KB
#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

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);
      |         ~~~~~^~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 0 ms 204 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 0 ms 332 KB Output is correct
8 Correct 0 ms 332 KB Output is correct
9 Correct 0 ms 332 KB Output is correct
10 Correct 0 ms 332 KB Output is correct
11 Correct 0 ms 332 KB Output is correct
12 Correct 0 ms 332 KB Output is correct
13 Correct 0 ms 332 KB Output is correct
14 Correct 1 ms 332 KB Output is correct
15 Correct 0 ms 332 KB Output is correct
16 Correct 0 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 0 ms 204 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 0 ms 332 KB Output is correct
8 Correct 0 ms 332 KB Output is correct
9 Correct 0 ms 332 KB Output is correct
10 Correct 0 ms 332 KB Output is correct
11 Correct 0 ms 332 KB Output is correct
12 Correct 0 ms 332 KB Output is correct
13 Correct 0 ms 332 KB Output is correct
14 Correct 1 ms 332 KB Output is correct
15 Correct 0 ms 332 KB Output is correct
16 Correct 0 ms 332 KB Output is correct
17 Correct 1 ms 332 KB Output is correct
18 Correct 1 ms 332 KB Output is correct
19 Correct 1 ms 332 KB Output is correct
20 Correct 1 ms 332 KB Output is correct
21 Correct 0 ms 332 KB Output is correct
22 Correct 0 ms 332 KB Output is correct
23 Correct 0 ms 332 KB Output is correct
24 Correct 1 ms 332 KB Output is correct
25 Correct 1 ms 332 KB Output is correct
26 Correct 1 ms 204 KB Output is correct
27 Correct 1 ms 332 KB Output is correct
28 Correct 0 ms 332 KB Output is correct
29 Correct 1 ms 332 KB Output is correct
30 Correct 0 ms 332 KB Output is correct
31 Correct 0 ms 332 KB Output is correct
32 Correct 0 ms 332 KB Output is correct
33 Correct 0 ms 332 KB Output is correct
34 Correct 0 ms 332 KB Output is correct
35 Correct 1 ms 416 KB Output is correct
36 Correct 1 ms 428 KB Output is correct
37 Correct 1 ms 332 KB Output is correct
38 Correct 1 ms 424 KB Output is correct
39 Correct 1 ms 332 KB Output is correct
40 Correct 1 ms 332 KB Output is correct
41 Correct 1 ms 332 KB Output is correct
42 Correct 1 ms 324 KB Output is correct
43 Correct 1 ms 332 KB Output is correct
44 Correct 1 ms 424 KB Output is correct
45 Correct 0 ms 432 KB Output is correct
46 Correct 1 ms 428 KB Output is correct
47 Correct 1 ms 332 KB Output is correct
48 Correct 1 ms 332 KB Output is correct
49 Correct 1 ms 420 KB Output is correct
50 Correct 0 ms 332 KB Output is correct
51 Correct 1 ms 428 KB Output is correct
52 Correct 1 ms 432 KB Output is correct
53 Correct 1 ms 404 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 0 ms 204 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 0 ms 332 KB Output is correct
8 Correct 0 ms 332 KB Output is correct
9 Correct 0 ms 332 KB Output is correct
10 Correct 0 ms 332 KB Output is correct
11 Correct 0 ms 332 KB Output is correct
12 Correct 0 ms 332 KB Output is correct
13 Correct 0 ms 332 KB Output is correct
14 Correct 1 ms 332 KB Output is correct
15 Correct 0 ms 332 KB Output is correct
16 Correct 0 ms 332 KB Output is correct
17 Correct 1 ms 332 KB Output is correct
18 Correct 1 ms 332 KB Output is correct
19 Correct 1 ms 332 KB Output is correct
20 Correct 1 ms 332 KB Output is correct
21 Correct 0 ms 332 KB Output is correct
22 Correct 0 ms 332 KB Output is correct
23 Correct 0 ms 332 KB Output is correct
24 Correct 1 ms 332 KB Output is correct
25 Correct 1 ms 332 KB Output is correct
26 Correct 1 ms 204 KB Output is correct
27 Correct 1 ms 332 KB Output is correct
28 Correct 0 ms 332 KB Output is correct
29 Correct 1 ms 332 KB Output is correct
30 Correct 0 ms 332 KB Output is correct
31 Correct 0 ms 332 KB Output is correct
32 Correct 0 ms 332 KB Output is correct
33 Correct 0 ms 332 KB Output is correct
34 Correct 0 ms 332 KB Output is correct
35 Correct 1 ms 416 KB Output is correct
36 Correct 1 ms 428 KB Output is correct
37 Correct 1 ms 332 KB Output is correct
38 Correct 1 ms 424 KB Output is correct
39 Correct 1 ms 332 KB Output is correct
40 Correct 1 ms 332 KB Output is correct
41 Correct 1 ms 332 KB Output is correct
42 Correct 1 ms 324 KB Output is correct
43 Correct 1 ms 332 KB Output is correct
44 Correct 1 ms 424 KB Output is correct
45 Correct 0 ms 432 KB Output is correct
46 Correct 1 ms 428 KB Output is correct
47 Correct 1 ms 332 KB Output is correct
48 Correct 1 ms 332 KB Output is correct
49 Correct 1 ms 420 KB Output is correct
50 Correct 0 ms 332 KB Output is correct
51 Correct 1 ms 428 KB Output is correct
52 Correct 1 ms 432 KB Output is correct
53 Correct 1 ms 404 KB Output is correct
54 Correct 1 ms 332 KB Output is correct
55 Correct 9 ms 10940 KB Output is correct
56 Correct 1 ms 460 KB Output is correct
57 Correct 9 ms 19620 KB Output is correct
58 Correct 34 ms 20160 KB Output is correct
59 Incorrect 263 ms 89744 KB Output isn't correct
60 Halted 0 ms 0 KB -