Submission #509179

#TimeUsernameProblemLanguageResultExecution timeMemory
509179cig32Dango Maker (JOI18_dango_maker)C++17
100 / 100
727 ms88416 KiB
#include <bits/stdc++.h> using namespace std; vector<int> active; int32_t main() { int n, m; cin >> n >> m; char a[n+1][m+1]; for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { cin >> a[i][j]; } } int dp[n+1][m+1][2]; for(int i=0; i<=n; i++) { for(int j=0; j<=m; j++) { dp[i][j][0] = dp[i][j][1] = 0; } } int ans = 0; for(int i=2; i<=n+m; i++) { int r, c; if(i <= m + 1) r = 1, c = i - 1; else c = m, r = i - m; int cm = i; dp[r][c][0] = (c>1 && c<m && a[r][c-1] == 'R' && a[r][c] == 'G' && a[r][c+1] == 'W'); dp[r][c][1] = (r>1 && r<n && a[r-1][c] == 'R' && a[r][c] == 'G' && a[r+1][c] == 'W'); int mx = max(dp[r][c][0], dp[r][c][1]); while(r+1 <= n && c-1 >= 1) { r++, c--; dp[r][c][0] = max( dp[r-1][c+1][0] + (c>1 && c<m && a[r][c-1] == 'R' && a[r][c] == 'G' && a[r][c+1] == 'W'), dp[r-1][c+1][1] ); dp[r][c][1] = max( dp[r-1][c+1][0], dp[r-1][c+1][1] + (r>1 && r<n && a[r-1][c] == 'R' && a[r][c] == 'G' && a[r+1][c] == 'W') ); mx = max(mx, dp[r][c][0]); mx = max(mx, dp[r][c][1]); } ans += mx; } cout << ans << "\n"; }

Compilation message (stderr)

dango_maker.cpp: In function 'int32_t main()':
dango_maker.cpp:26:13: warning: unused variable 'cm' [-Wunused-variable]
   26 |         int cm = i;
      |             ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...