結果
問題 |
No.640 76本のトロンボーン
|
ユーザー |
![]() |
提出日時 | 2025-08-24 12:51:42 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,019 bytes |
コンパイル時間 | 1,507 ms |
コンパイル使用メモリ | 166,668 KB |
実行使用メモリ | 7,716 KB |
最終ジャッジ日時 | 2025-08-24 12:51:45 |
合計ジャッジ時間 | 2,608 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 13 WA * 2 |
ソースコード
#include <bits/stdc++.h> #define FILE(x) \ freopen(x ".in", "r", stdin); \ freopen(x ".out", "w", stdout); using namespace std; const int N = 80; int n; string s[N], t[N]; int ans; bool flag[N][2]; bool pd[4]; int f() { int res = 0; memset(flag, 0, sizeof flag); for (int i = 1; i <= n; i++) { bool ok = 0; for (int j = 2; j < n; j++) { if (s[i][j] == '#') ok = 1; } if (!ok) { if (s[i][1] != '#') flag[i][0] = 1; if (s[i][n] != '#') flag[i][1] = 1; res += (flag[i][0] || flag[i][1]); } } memset(pd, 0, sizeof pd); for (int i = 0; i < 4; i++) { int tot = 0; bool row = 1; for (int j = 1; j < n; j++) { if (s[j + (i & 2 ? 1 : 0)][i & 1 ? 1 : n] == '#') row = 0; } pd[i] = row; if (row) tot++; int p = i & 2 ? 1 : n; if (flag[p][0] || flag[p][1]) { tot++; } for (int j = 1; j < n; j++) { if (flag[j + (i & 2 ? 1 : 0)][i & 1]) tot++; } res = max(res, tot); } res = max(res, pd[0] + pd[1] + (flag[n][1] || flag[n][2])); res = max(res, pd[2] + pd[3] + (flag[1][1] || flag[1][2])); res = max(res, pd[0] + pd[3] + flag[1][1] + flag[n][2]); res = max(res, pd[1] + pd[2] + flag[1][2] + flag[n][1]); return res; } void solve() { cin >> n; for (int i = 1; i <= n; i++) { cin >> s[i]; s[i] = ' ' + s[i]; t[i] = s[i]; } ans = f(); for (int i = 1; i <= n; i ++) { for (int j = 1; j <= n; j ++) { s[i][j] = t[j][i]; } } cout << max(ans, f()); } int main() { //FILE("trombone"); ios ::sync_with_stdio(0); cin.tie(0), cout.tie(0); int T = 1; while (T--) solve(); return 0; }