Submission #303145

#TimeUsernameProblemLanguageResultExecution timeMemory
303145jainbot27Dango Maker (JOI18_dango_maker)C++17
100 / 100
615 ms12068 KiB
#include <bits/stdc++.h>
using namespace std;
const int mxN = 6002;
int n, m, ans, dp[mxN][3]; string s[mxN];
inline bool ok(int x, int y, char k){
    return (x >= 0 && y >= 0 && x < n && y < m && s[x][y] == k);
}
int32_t main(){
    cin >> n >> m;
    for(int i=0; i < n; i++){
        cin >> s[i];
    }
    for(int k = 0; k < n + m; k++){
        for(int i = 0; i <= min(k, k); i++){
            int j=k-i;
            dp[i+1][0] = max({dp[i][0], dp[i][1], dp[i][2]});
            dp[i+1][1] = max(dp[i][1], dp[i][0]) + (ok(i, j, 'G') && ok(i-1, j, 'R') && ok(i+1, j, 'W'));
            dp[i+1][2] = max(dp[i][2], dp[i][0]) + (ok(i, j, 'G') && ok(i, j-1, 'R') && ok(i, j+1, 'W'));
        }
        ans +=max({dp[k+1][0], dp[k+1][1], dp[k+2][2]});
    }
    cout << ans << "\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...