Submission #678545

#TimeUsernameProblemLanguageResultExecution timeMemory
678545vjudge1Dango Maker (JOI18_dango_maker)C++17
100 / 100
638 ms150604 KiB
/* #pragma GCC optimize("Ofast") #pragma GCC target("avx,avx2,fma") #pragma GCC optimize("unroll-loops") */ // lethal option #include<bits/stdc++.h> using namespace std; #define all(flg) flg.begin(), flg.end() #define int long long #define pb push_back #define fi first #define se second #define endl "\n" #define eb emplace_back #define ii pair<int, int> #define vi vector<int> #define PI 3.141592653589793238462643383279502884 #define ll long long #define ld long double #define for1(i, ff, gg) for(int i = ff; i <= gg; ++i) #define for2(i, ff, gg) for(int i = ff; i >= gg; --i) const ll mod = 1e9 + 7; const int maxN = 3005; const ll oo = 1e18 + 7; int n, a[maxN]; int x, y, z, k, m; int dp[maxN][maxN][2]; char c[maxN][maxN]; signed main(){ // freopen(".inp", "r", stdin); ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); memset(dp, 0, sizeof(dp)); memset(c, 0, sizeof(c)); cin >> n >> m; for1(i, 1, n) for1(j, 1, m) cin >> c[i][j]; for2(i, n, 1) for2(j, m, 1){ string s; s.clear(); for1(g, j, j + 2) s.pb(c[i][g]); if(s == "RGW"){ dp[i][j][0] = max(dp[i + 1][j - 1][0], dp[i + 1][j - 1][1]) + 1; } s.clear(); for1(g, i, i + 2) s.pb(c[g][j]); if(s == "RGW"){ dp[i][j][1] = max((j >= 3 ? dp[i + 3][j - 3][0] : 0), dp[i + 1][j - 1][1]) + 1; } for1(g, 0, 1){ dp[i][j][g] = max(dp[i][j][g], dp[i + 1][j - 1][g]); } } // cout << dp[2][1][0] << " " << dp[2][1][1] << endl; int ans = 0; for1(i, 1, n){ for1(j, 1, m) if(j == m || i == 1) ans += max(dp[i][j][0], dp[i][j][1]); } cout << ans << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...