Submission #77950

#TimeUsernameProblemLanguageResultExecution timeMemory
77950aquablitz11Dango Maker (JOI18_dango_maker)C++14
100 / 100
668 ms115480 KiB
#include <bits/stdc++.h> using namespace std; const int N = 6010; char S[N][N]; int dp[N*2][8], val[N*2]; int main() { int n, m; scanf("%d%d", &n, &m); for (int i = 0; i < n; ++i) scanf(" %s", S[i]); int ans = 0; for (int d = 0; d <= n+m-2; ++d) { //printf("diagonal %d\n", d); for (int j = 0; j <= d; ++j) { int i = d-j; val[2*j] = (S[i][j] == 'R' && S[i][j+1] == 'G' && S[i][j+2] == 'W') ? 1 : 0; val[2*j+1] = (S[i][j] == 'R' && S[i+1][j] == 'G' && S[i+2][j] == 'W') ? 1 : 0; //printf("%d %d ", val[2*j], val[2*j+1]); } //printf("\n"); fill(dp[2*d], dp[2*d]+8, 0); for (int i = 2*d+1; i >= 0; --i) { //printf("%d: ", i); if (i%2 == 0) { // horizontal for (int j = 0; j <= 3; ++j) { dp[i][j] = max(val[i]+dp[i+1][(j<<1)+1], dp[i+1][j<<1]); //printf("%d ", dp[i][j]); } } else { // vertical for (int j = 0; j <= 7; ++j) { dp[i][j] = dp[i+1][j&3]; if (j == 0) dp[i][j] += val[i]; //printf("%d ", dp[i][j]); } } //printf("\n"); } ans += dp[0][0]; } printf("%d\n", ans); return 0; }

Compilation message (stderr)

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