Submission #1161289

#TimeUsernameProblemLanguageResultExecution timeMemory
1161289brover29Dango Maker (JOI18_dango_maker)C++17
100 / 100
291 ms150404 KiB
#include <bits/stdc++.h>
//qwerty47924692
using namespace std;
using ll = long long;
const ll N=3005;
const string br="617283";
#define sz(a)(ll)a.size()
#define f first
#define s second
ll n,m,dp[N][N][2];
char a[N][N];
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    cin>>n>>m;
    for(ll i=1;i<=n;i++){
        for(ll j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }ll ans=0;
    for(ll x=1;x<=n;x++){
        ll i=x,j=1;
        while(i>=1&&j<=m){
            dp[i][j][1]=max(dp[i+1][j-1][0],dp[i+1][j-1][1]);
            dp[i][j][0]=dp[i+1][j-1][0];
            if(j>=3)dp[i][j][0]=max(dp[i][j][0],dp[i+3][j-3][1]);
            if(i>=3&&a[i][j]=='W'&&a[i-1][j]=='G'&&a[i-2][j]=='R'){
                dp[i][j][1]++;
            }if(j>=3&&a[i][j]=='W'&&a[i][j-1]=='G'&&a[i][j-2]=='R'){
                dp[i][j][0]++;
            }
            i--;
            j++;
        }
        i++;
        j--;
        ans+=max(dp[i][j][0],dp[i][j][1]);
    }for(ll y=2;y<=m;y++){
        ll i=n,j=y;
        while(i>=1&&j<=m){
            dp[i][j][1]=max(dp[i+1][j-1][0],dp[i+1][j-1][1]);
            dp[i][j][0]=dp[i+1][j-1][0];
            if(j>=3)dp[i][j][0]=max(dp[i][j][0],dp[i+3][j-3][1]);
            if(i>=3&&a[i][j]=='W'&&a[i-1][j]=='G'&&a[i-2][j]=='R'){
                dp[i][j][1]++;
            }if(j>=3&&a[i][j]=='W'&&a[i][j-1]=='G'&&a[i][j-2]=='R'){
                dp[i][j][0]++;
            }
            i--;
            j++;
        }i++;
        j--;
        ans+=max(dp[i][j][0],dp[i][j][1]);
    }
    cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...