Submission #141691

#TimeUsernameProblemLanguageResultExecution timeMemory
141691osaaateiasavtnlDango Maker (JOI18_dango_maker)C++14
100 / 100
284 ms18168 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define ii pair <int, int>
#define app push_back
#define all(a) a.begin(), a.end()
const int N = 3001; char a[N][N];
int dp[N << 1][3];
signed main() {
    #ifdef HOME
    freopen("input.txt", "r", stdin);
    #else
    ios_base::sync_with_stdio(0); cin.tie(0);
    #endif
    int n, m; cin >> n >> m; 
    for (int i = 0; i < n; ++i) for (int j = 0; j < m; ++j) cin >> a[i][j];
    int ans = 0;
    for (int sum = 0; sum < 2 * N; ++sum) {
        for (int i = 0; i < N; ++i) for (int j = 0; j < 3; ++j) dp[i][j] = -N;
        int tmp = max(0ll, sum - m + 1);
        dp[tmp][0] = 0; int r = tmp;
        for (int i = tmp; i <= sum && i < n; ++i) {
            int j = sum - i;
            int t = -N; for (int k = 0; k < 3; ++k) dp[i + 1][0] = max(dp[i + 1][0], dp[i][k]);
            if (a[i][j] == 'G' && i && a[i - 1][j] == 'R' && a[i + 1][j] == 'W') dp[i + 1][1] = max(dp[i][0], dp[i][1]) + 1;
            if (a[i][j] == 'G' && j && a[i][j - 1] == 'R' && a[i][j + 1] == 'W') dp[i + 1][2] = max(dp[i][0], dp[i][2]) + 1;
            r = i + 1;
        }
        int add = 0;
        for (int i = 0; i < 3; ++i) add = max(add, dp[r][i]);
        ans += add;
    }
    cout << ans << '\n';
}   

Compilation message (stderr)

dango_maker.cpp: In function 'int main()':
dango_maker.cpp:24:17: warning: unused variable 't' [-Wunused-variable]
             int t = -N; for (int k = 0; k < 3; ++k) dp[i + 1][0] = max(dp[i + 1][0], dp[i][k]);
                 ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...