이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |