Submission #599092

#TimeUsernameProblemLanguageResultExecution timeMemory
599092jmyszka2007Dango Maker (JOI18_dango_maker)C++17
100 / 100
224 ms123972 KiB
#include <bits/stdc++.h> using namespace std; char tab[3010][3010]; int dp[3010][3010][2]; int ans[3010][3010]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; n += 2; m += 2; for(int i = 3; i <= n; i++) { for(int j = 3; j <= m; j++) { cin >> tab[i][j]; } } for(int i = 3; i <= n; i++) { for(int j = 3; j <= m; j++) { dp[i][j][0] = dp[i - 1][j + 1][0]; dp[i][j][1] = dp[i - 1][j + 1][1]; if(tab[i][j] == 'R' && tab[i][j + 1] == 'G' && tab[i][j + 2] == 'W') { if(max(dp[i - 1][j + 1][0], dp[i - 3][j + 3][1]) + 1 > dp[i][j][0]) { dp[i][j][0] = max(dp[i - 1][j + 1][0], dp[i - 3][j + 3][1]) + 1; } } if(tab[i][j] == 'R' && tab[i + 1][j] == 'G' && tab[i + 2][j] == 'W') { if(max(dp[i - 1][j + 1][0], dp[i - 1][j + 1][1]) + 1 > dp[i][j][1]) { dp[i][j][1] = max(dp[i - 1][j + 1][0], dp[i - 1][j + 1][1]) + 1; } } ans[i][j] = max(dp[i][j][0], dp[i][j][1]); } } int res = 0; for(int i = 3; i <= n; i++) { res += ans[i][3]; } for(int j = 4; j <= m; j++) { res += ans[n][j]; } cout << res << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...