Submission #1178825

#TimeUsernameProblemLanguageResultExecution timeMemory
1178825MongHwaDango Maker (JOI18_dango_maker)C++20
100 / 100
168 ms139008 KiB
#pragma GCC optimize ("Ofast") #pragma GCC optimize ("unroll-loops") #include <iostream> using namespace std; string stage[3005]; int dp[6005][3050][3]; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, m;; cin >> n >> m; for(int i = 0; i < n; i++) cin >> stage[i]; int ans = 0; for(int k = 0; k < n+m-1; k++) { int idx = 0; for(int i = min(k, n-1); i >= 0 && k-i < m; i--) { if(idx > 0) { dp[k][idx][0] = max(dp[k][idx-1][0], max(dp[k][idx-1][1], dp[k][idx-1][2])); dp[k][idx][1] = max(dp[k][idx-1][0], dp[k][idx-1][1]); dp[k][idx][2] = max(dp[k][idx-1][0], dp[k][idx-1][2]); } if(stage[i][k-i] == 'G') { if(i-1 >= 0 && i+1 < n && stage[i-1][k-i] == 'R' && stage[i+1][k-i] == 'W') dp[k][idx][1]++; if(k-i-1 >= 0 && k-i+1 < m && stage[i][k-i-1] == 'R' && stage[i][k-i+1] == 'W') dp[k][idx][2]++; } idx++; } ans += max(dp[k][idx-1][0], max(dp[k][idx-1][1], dp[k][idx-1][2])); } cout << ans << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...