Submission #714194

#TimeUsernameProblemLanguageResultExecution timeMemory
714194gaga999Dango Maker (JOI18_dango_maker)C++17
100 / 100
176 ms26792 KiB
#include <cstdio> #include <stdio.h> #include <iostream> #include <math.h> #include <vector> #include <queue> #include <stack> #include <deque> #include <algorithm> #include <utility> #include <set> #include <map> #include <stdlib.h> #include <cstring> #include <string.h> #include <string> #include <sstream> #include <assert.h> #include <climits> #include <sstream> #include <numeric> #include <time.h> #include <limits.h> #include <list> #include <bitset> #include <unordered_map> #include <unordered_set> #include <random> #include <iomanip> #include <complex> #include <chrono> // #pragma GCC optimize("Ofast,no-stack-protector") // #pragma GCC optimize("O3,unroll-loops") // #pragma GCC target("avx,avx2,bmi,bmi2,lzcnt,popcnt") #define lowbit(x) ((x) & -(x)) #define ml(a, b) ((1ll * (a) * (b)) % M) #define tml(a, b) (a) = ((1ll * (a) * (b)) % M) #define ad(a, b) ((0ll + (a) + (b)) % M) #define tad(a, b) (a) = ((0ll + (a) + (b)) % M) #define mi(a, b) ((0ll + M + (a) - (b)) % M) #define tmi(a, b) (a) = ((0ll + M + (a) - (b)) % M) #define tmin(a, b) (a) = min((a), (b)) #define tmax(a, b) (a) = max((a), (b)) #define iter(a) (a).begin(), (a).end() #define riter(a) (a).rbegin(), (a).rend() #define init(a, b) memset((a), (b), sizeof(a)) #define cpy(a, b) memcpy((a), (b), sizeof(a)) #define uni(a) a.resize(unique(iter(a)) - a.begin()) #define pb push_back #define mpr make_pair #define ls(i) ((i) << 1) #define rs(i) ((i) << 1 | 1) #define INF 0x3f3f3f3f #define eps 1e-9 #define F first #define S second #define N 3005 #define AC cin.tie(0)->sync_with_stdio(0) using namespace std; typedef long long llt; typedef pair<int, int> pii; typedef pair<double, double> pdd; typedef pair<llt, llt> pll; typedef pair<bool, bool> pbb; typedef complex<double> cd; // const int M = 998244353; // random_device rm; // mt19937 rg(rm()); // default_random_engine rg(rm()); // uniform_int_distribution<int> rd(INT_MIN, INT_MAX); // uniform_real_distribution<double> rd(0, M_PI); void db() { cout << "\n"; } template <class T, class... U> void db(T a, U... b) { cout << a << " ", db(b...); } int n, m, an, ct, dp[3][N]; char s[N][N]; pbb ar[N][N], br[N]; inline bool in(int x, int y) { return 0 < x && x <= n && 0 < y && y <= m; } signed main() { int x, y; scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++) scanf("%s", s[i] + 1); for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { ar[i][j].F = (s[i][j - 1] == 'R' && s[i][j] == 'G' && s[i][j + 1] == 'W'); ar[i][j].S = (s[i - 1][j] == 'R' && s[i][j] == 'G' && s[i + 1][j] == 'W'); } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { x = i, y = j, ct = 0; while (in(x, y) && ((ar[x][y].F) || (ar[x][y].S))) br[++ct] = ar[x][y], ar[x++][y--] = mpr(0, 0); for (int k = 1; k <= ct; k++) { dp[0][k] = max({dp[0][k - 1], dp[1][k - 1], dp[2][k - 1]}); dp[1][k] = br[k].F ? max(dp[1][k - 1], dp[0][k - 1]) + 1 : -INF; dp[2][k] = br[k].S ? max(dp[2][k - 1], dp[0][k - 1]) + 1 : -INF; } an += max({dp[0][ct], dp[1][ct], dp[2][ct]}); } } printf("%d\n", an); }

Compilation message (stderr)

dango_maker.cpp: In function 'int main()':
dango_maker.cpp:90:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   90 |     scanf("%d%d", &n, &m);
      |     ~~~~~^~~~~~~~~~~~~~~~
dango_maker.cpp:92:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   92 |         scanf("%s", s[i] + 1);
      |         ~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...