Submission #668946

#TimeUsernameProblemLanguageResultExecution timeMemory
668946Darren0724Dango Maker (JOI18_dango_maker)C++17
100 / 100
137 ms97664 KiB
#include<bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n,m;cin>>n>>m; vector<string> v(n+2); for(int i=1;i<=n;i++){ cin>>v[i]; v[i]=" "+v[i]+" "; } v[0]=string(m+2,' '); v[n+1]=string(m+2,' '); vector<vector<int>> dp1(n+2,vector<int>(m+2)),dp2(n+2,vector<int>(m+2)); vector<int> dp(n+m+10); for(int i=n;i>=1;i--){ for(int j=m;j>=1;j--){ dp1[i][j]=max(dp1[i+1][j-1],dp2[i+1][j-1]); dp2[i][j]=dp1[i][j]; if(v[i][j]=='G'){ if(v[i-1][j]=='R'&&v[i+1][j]=='W'){ dp1[i][j]=max(dp1[i][j],dp1[i+1][j-1]+1); } if(v[i][j-1]=='R'&&v[i][j+1]=='W'){ dp2[i][j]=max(dp2[i][j],dp2[i+1][j-1]+1); } } dp[i+j]=max({dp[i+j],dp1[i][j],dp2[i][j]}); } } int ans=0; for(int j:dp){ ans+=j; } cout<<ans<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...