Submission #1050467

#TimeUsernameProblemLanguageResultExecution timeMemory
1050467vjudge1Dango Maker (JOI18_dango_maker)C++17
100 / 100
316 ms230232 KiB
#include<algorithm>
#include<iostream>
#include<vector>
#include<queue>
#include<set>
using namespace std;
 
#define ll long long

const ll maxn=3011;

ll n,m,dp[maxn][maxn][3];
char c[maxn][maxn];

bool hor(ll i,ll j){
      return (c[i][j-1]=='R' and c[i][j]=='G' and c[i][j+1]=='W');
}

bool ver(ll i,ll j){
      return (c[i-1][j]=='R' and c[i][j]=='G' and c[i+1][j]=='W');
}

int main(){
      cin>>n>>m;
      for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                  cin>>c[i][j];
            }
      }
      for(ll i=1;i<=n;i++){
            for(ll j=1;j<=m;j++){
                  dp[i][j][0]=max({dp[i-1][j+1][0],dp[i-1][j+1][1],dp[i-1][j+1][2]});
                  dp[i][j][1]=max(dp[i-1][j+1][0],dp[i-1][j+1][1])+hor(i,j);
                  dp[i][j][2]=max(dp[i-1][j+1][0],dp[i-1][j+1][2])+ver(i,j);
            }
      }
      ll ans=0;
      for(ll i=1;i<=n;i++){
            ans+=max(dp[i][1][0],max(dp[i][1][1],dp[i][1][2]));
      }
      for(ll j=2;j<=m;j++){
            ans+=max(dp[n][j][0],max(dp[n][j][1],dp[n][j][2]));
      }
      cout<<ans;
      
      return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...