結果
| 問題 |
No.640 76本のトロンボーン
|
| コンテスト | |
| ユーザー |
vjudge1
|
| 提出日時 | 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;
}
vjudge1