Submission #679573

#TimeUsernameProblemLanguageResultExecution timeMemory
679573minhcoolDango Maker (JOI18_dango_maker)C++17
100 / 100
1249 ms18352 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define fi first #define se second #define pb push_back #define mp make_pair typedef pair<int, int> ii; typedef pair<ii, int> iii; typedef pair<ii, ii> iiii; const int N = 3e3 + 5; const int oo = 1e18 + 7, mod = 1e9 + 7; int n, m; char c[N][N]; int dp[2 * N][3][3]; bool ck(int x, int y, int dir){ if(dir == 2) return 0; if(!dir){ if(y >= (m - 1)) return 0; return (c[x][y] == 'R' && c[x][y + 1] == 'G' && c[x][y + 2] == 'W'); } else{ if(x >= (n - 1)) return 0; return (c[x][y] == 'R' && c[x + 1][y] == 'G' && c[x + 2][y] == 'W'); } } void process(){ cin >> n >> m; for(int i = 1; i <= n; i++){ for(int j = 1; j <= m; j++) cin >> c[i][j]; } int answer = 0; for(int i = 2; i <= (n + m); i++){ int sta = max(i - m, 1LL), en = min(n, i - 1); for(int j = sta; j <= en; j++){ for(int k = 0; k < 3; k++){ for(int h = 0; h < 3; h++) dp[j][k][h] = -oo; } } dp[sta][2][0] = 0; dp[sta][0][0] = ck(sta, i - sta, 0); dp[sta][1][0] = ck(sta, i - sta, 1); for(int j = sta; j < en; j++){ for(int k = 0; k <= 2; k++){ for(int h = 0; h <= 2; h++){ for(int nxt = 0; nxt <= 2; nxt++){ if(nxt == 0){ if(k == 1 || h == 1) continue; } dp[j + 1][nxt][k] = max(dp[j + 1][nxt][k], dp[j][k][h] + ck(j + 1, i - (j + 1), nxt)); } } } } int temp = -1; for(int i = 0; i <= 2; i++){ for(int j = 0; j <= 2; j++) temp = max(temp, dp[en][i][j]); } //cout << i << " " << temp << "\n"; answer += temp; } cout << answer << "\n"; } signed main(){ ios_base::sync_with_stdio(0); int t = 1; //cin >> t; while(t--) process(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...