제출 #1161953

#제출 시각아이디문제언어결과실행 시간메모리
1161953SUNWOOOOOOOODango Maker (JOI18_dango_maker)C++20
13 / 100
0 ms584 KiB
#include <bits/stdc++.h> using namespace std; using pint = array <int, 2>; using tint = array <int, 3>; const int mxN = 3001; char A[mxN][mxN]; int n, m, ans = 0; bool vst[2][mxN][mxN], adj[2][mxN][mxN][3]; int main() { scanf("%d %d", &n, &m); for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) scanf(" %c", &A[i][j]); for (int i = 1; i <= n - 2; i++) { for (int j = 1; j <= m; j++){ if (A[i][j] == 'R' && A[i + 1][j] == 'G' && A[i + 2][j] == 'W') vst[1][i][j] = true; } } for (int i = 1; i <= n; i++){ for (int j = 1; j <= m - 2; j++){ if (!(A[i][j] == 'R' && A[i][j + 1] == 'G' && A[i][j + 2] == 'W')) continue; vst[0][i][j] = true; if (i + 2 <= n && vst[1][i][j]){ adj[0][i][j][0] = 1; adj[1][i][j][0] = 1; } if (i - 1 >= 1 && i + 1 <= n && vst[1][i - 1][j + 1]){ adj[0][i][j][1] = 1; adj[1][i - 1][j + 1][1] = 1; } if (i - 2 >= 1 && vst[1][i - 2][j + 2]){ adj[0][i][j][2] = 1; adj[1][i - 2][j + 2][2] = 1; } } } for (int b : {0, 1}){ for (int i = 1; i <= n; i++){ for (int j = 1; j <= m; j++){ if (!vst[b][i][j]) continue; pint ret = {0, 0}; queue <tint> q; q.push({b, i, j}); vst[b][i][j] = false; while (!q.empty()){ tint cur = q.front(); q.pop(); ret[cur[0]]++; vector <tint> nxt; if (!cur[0] && adj[cur[0]][cur[1]][cur[2]][0]) nxt.push_back({1, cur[1], cur[2]}); if (!cur[0] && adj[cur[0]][cur[1]][cur[2]][1]) nxt.push_back({1, cur[1] - 1, cur[2] + 1}); if (!cur[0] && adj[cur[0]][cur[1]][cur[2]][2]) nxt.push_back({1, cur[1] - 2, cur[2] + 2}); if (cur[0] && adj[cur[0]][cur[1]][cur[2]][0]) nxt.push_back({0, cur[1], cur[2]}); if (cur[0] && adj[cur[0]][cur[1]][cur[2]][1]) nxt.push_back({0, cur[1] + 1, cur[2] - 1}); if (cur[0] && adj[cur[0]][cur[1]][cur[2]][2]) nxt.push_back({0, cur[1] + 2, cur[2] - 2}); for (tint elm : nxt){ if (!vst[elm[0]][elm[1]][elm[2]]) continue; vst[elm[0]][elm[1]][elm[2]] = false; q.push({elm[0], elm[1], elm[2]}); } } ans += max(ret[0], ret[1]); } } } printf("%d\n", ans); return 0; }

컴파일 시 표준 에러 (stderr) 메시지

dango_maker.cpp: In function 'int main()':
dango_maker.cpp:12:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |     scanf("%d %d", &n, &m);
      |     ~~~~~^~~~~~~~~~~~~~~~~
dango_maker.cpp:13:68: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   13 |     for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) scanf(" %c", &A[i][j]);
      |                                                               ~~~~~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...