結果
| 問題 | No.3725 Exploit Wall |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-09-19 16:36:32 |
| 言語 | C++23(gcc16) (gcc 16.1.0 + boost 1.92.0 + ACL) |
| 結果 |
WA
不安定
|
| 実行時間 | - |
| コード長 | 2,227 bytes |
| 記録 | |
| コンパイル時間 | 1,821 ms |
| コンパイル使用メモリ | 229,288 KB |
| 実行使用メモリ | 10,060 KB |
| 最終ジャッジ日時 | 2026-09-19 16:36:38 |
| 合計ジャッジ時間 | 4,921 ms |
|
ジャッジサーバーID (参考情報) |
judge5_0 / judge3_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | WA * 59 |
ソースコード
#include<iostream>
#include<vector>
#include<map>
#include<queue>
#include<algorithm>
using namespace std;
using ll = long long;
using P = pair<int, int>;
bool reach(int n, vector<string>& s){
vector ok(n, vector<int>(n));
queue<P> bfs;
bfs.emplace(0, 0);
int di[4]={-1, 0, 1, 0};
int dj[4]={0, 1, 0, -1};
while(bfs.size()){
auto [i, j]=bfs.front(); bfs.pop();
if(ok[i][j]) continue;
ok[i][j]=1;
for(int k=0; k<4; k++){
int ni=i+di[k], nj=j+dj[k];
if(ni<0||nj<0||ni>=n||nj>=n) continue;
if(s[ni][nj]=='#') continue;
bfs.emplace(ni, nj);
}
}
return ok[n-1][n-1];
}
void exp(int n){
int mx=(1<<(n*n));
map<vector<string>, bool> goal;
for(int i=1; i<mx; i++){
vector<string> now(n, string(n, '.'));
for(int j=0; j<n; j++)for(int k=0; k<n; k++){
int p=j*n+k;
if(i>>p&1) now[j][k]='#';
}
goal[now]=reach(n, now);
}
for(int i=1; i<mx; i++){
vector<string> now(n, string(n, '.'));
for(int j=0; j<n; j++)for(int k=0; k<n; k++){
int p=j*n+k;
if(i>>p&1) now[j][k]='#';
}
if(goal[now]) continue;
bool alice_win=true;
{
for(int li=1; li<n-1; li++){
for(int ri=li; ri<n-1; ri++){
for(int ni=li; ni<=ri; ni++)for(int nj=0; nj<n; nj++) now[ni][nj]=(now[ni][nj]=='.'?'#':'.');
if(!goal[now]){alice_win=false; break;}
for(int ni=li; ni<=ri; ni++)for(int nj=0; nj<n; nj++) now[ni][nj]=(now[ni][nj]=='.'?'#':'.');
}
if(!alice_win) break;
}
}
{
for(int lj=1; lj<n-1; lj++){
for(int rj=lj; rj<n-1; rj++){
for(int ni=0; ni<n; ni++)for(int nj=lj; nj<=rj; nj++) now[ni][nj]=(now[ni][nj]=='.'?'#':'.');
if(!goal[now]){alice_win=false; break;}
for(int ni=0; ni<n; ni++)for(int nj=lj; nj<=rj; nj++) now[ni][nj]=(now[ni][nj]=='.'?'#':'.');
}
}
if(!alice_win) break;
}
if(alice_win){
for(auto p:now) cout << p << endl; return;
}
}
cout << "Nothing" << endl;
}
int main(void){
int n; cin >> n;
if(n==3){
cout << ".#." << '\n' << "#.." << '\n' << "..." << endl; return 0;
}
else if(n<=5) cout << -1 << endl;
else cout << -1 << endl;
return 0;
}