Submission #977992

#TimeUsernameProblemLanguageResultExecution timeMemory
977992LOLOLODango Maker (JOI18_dango_maker)C++17
33 / 100
163 ms28012 KiB
#include <bits/stdc++.h> typedef long long ll; using namespace std; #define f first #define s second #define pb push_back #define ep emplace #define eb emplace_back #define lb lower_bound #define ub upper_bound #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define uniquev(v) sort(all(v)), (v).resize(unique(all(v)) - (v).begin()) #define mem(f,x) memset(f , x , sizeof(f)) #define sz(x) (int)(x).size() #define __lcm(a, b) (1ll * ((a) / __gcd((a), (b))) * (b)) #define mxx *max_element #define mnn *min_element #define cntbit(x) __builtin_popcountll(x) #define len(x) (int)(x.length()) const int N = 3e3 + 100; char mat[N][N]; int f[N * 4][3]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cin >> mat[i][j]; } } int ans = 0; for (int dig = 1; dig <= m + n; dig++) { int mn = max(1, dig - m), mx = max(1, dig - 1); for (int i = 0; i <= m + n; i++) f[i][0] = f[i][1] = f[i][2] = 0; for (int x = mn; x <= mx; x++) { int y = dig - x; if (mat[x][y] == 'G') { if (mat[x - 1][y] == 'R' && mat[x + 1][y] == 'W') f[x][1] = max(f[x - 1][1], f[x - 1][0]) + 1; if (mat[x][y - 1] == 'R' && mat[x][y + 1] == 'W') f[x][2] = max(f[x - 1][2], f[x - 1][0]) + 1; } f[x][0] = max({f[x - 1][0], f[x - 1][1], f[x - 1][2]}); } ans += max({f[mx][0], f[mx][1], f[mx][2]}); } cout << ans << '\n'; return 0; } // a[l] += 1 // a[r + 1] -=
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...