Submission #66854

#TimeUsernameProblemLanguageResultExecution timeMemory
66854yusufakeDango Maker (JOI18_dango_maker)C++98
100 / 100
1393 ms198408 KiB
#include<bits/stdc++.h> 
using namespace std; 
 
#define mp make_pair 
#define pb push_back 
#define st first 
#define nd second 
 
typedef long long ll; 
typedef pair < int , int > pp; 
const int mod = 1e9 + 7; 
const int N   = 3e3 + 3; 
 
int M[N][N][2][2],H[N][N],m,n,i,j,ans;
char A[N][N];
 
int f(int x, int y, int a, int b){
    if(A[x][y] != 'G') return 0;
    H[x][y] = 1;
    int &r = M[x][y][a][b];
    if(r != -1) return r;
    if(a && A[x][y-1] == 'R') r = max(r , f(x+1,y-1,A[x+1][y]=='W',0)+1);
    if(b && A[x+1][y] == 'W') r = max(r , f(x+1,y-1,0,A[x][y-1]=='R')+1);
    return r = max(r , f(x+1,y-1,A[x+1][y]=='W',A[x][y-1]=='R'));   
}
 
int main(){
    scanf("%d%d",&m,&n);
    for(i=1;i<=m;i++)
        for(j=1;j<=n;j++)
            scanf(" %c", &A[i][j]);
            
    memset(M , -1 , sizeof M);
    for(i=1;i<=m;i++)
        for(j=n; j ;j--)
            if(A[i][j] == 'G' && !H[i][j])
                ans += f(i,j,A[i][j+1]=='W',A[i-1][j]=='R');

    printf("%d",ans);
    return 0;
}

Compilation message (stderr)

dango_maker.cpp: In function 'int main()':
dango_maker.cpp:28:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&m,&n);
     ~~~~~^~~~~~~~~~~~~~
dango_maker.cpp:31:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf(" %c", &A[i][j]);
             ~~~~~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...