結果
| 問題 |
No.470 Inverse S+T Problem
|
| コンテスト | |
| ユーザー |
けー
|
| 提出日時 | 2017-04-15 00:23:25 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,070 bytes |
| コンパイル時間 | 2,055 ms |
| コンパイル使用メモリ | 181,612 KB |
| 実行使用メモリ | 13,636 KB |
| 最終ジャッジ日時 | 2024-12-22 13:42:21 |
| 合計ジャッジ時間 | 14,165 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 15 WA * 9 TLE * 3 |
ソースコード
#include<bits/stdc++.h>
#define int long long
const int inf=8938103643641919514ll;
const int mod=1000000007;
const int dd[]={0,-1,0,1,0};
using namespace std;
int a,b,c,d;
char p[100000][3];
unordered_set<string> se;
vector<string> ve;
void saiki(int u){
if(u==a){
for(int i=0;i<a;i++)
cout<<ve[i*2]<<" "<<ve[i*2+1]<<endl;;
exit(0);
}
string s,t;
s.push_back(p[u][0]);
t.push_back(p[u][1]);
t.push_back(p[u][2]);
if(se.find(s)==end(se)&&se.find(t)==end(se)){
se.insert(s);
se.insert(t);
ve.push_back(s);
ve.push_back(t);
saiki(u+1);
se.erase(s);
se.erase(t);
ve.erase(rend(ve).base());
ve.erase(rend(ve).base());
}
s.clear();
t.clear();
s.push_back(p[u][0]);
s.push_back(p[u][1]);
t.push_back(p[u][2]);
if(se.find(s)==end(se)&&se.find(t)==end(se)){
se.insert(s);
se.insert(t);
ve.push_back(s);
ve.push_back(t);
saiki(u+1);
se.erase(s);
se.erase(t);
ve.erase(rend(ve).base());
ve.erase(rend(ve).base());
}
}
signed main(){
int i,j;
cin>>a;
for(i=0;i<a;i++)
cin>>p[i];
saiki(0);
cout<<"Impossible"<<endl;
}
けー