結果
| 問題 |
No.548 国士無双
|
| ユーザー |
|
| 提出日時 | 2018-01-18 14:49:01 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 946 bytes |
| コンパイル時間 | 786 ms |
| コンパイル使用メモリ | 77,156 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-09-17 13:49:54 |
| 合計ジャッジ時間 | 1,567 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 24 |
ソースコード
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
string s;
cin >> s;
vector<vector<bool>> alpha(3, vector<bool>(13, false));
alpha[0].assign(13, true);
int n0 = 13;
int n1 = 0;
int n2 = 0;
bool ok = true;
for (auto c : s) {
int idx = c - 'a';
if (alpha[2][idx]) {
ok = false;
break;
} else if (alpha[1][idx]) {
alpha[1][idx] = false;
alpha[2][idx] = true;
n1--;
n2++;
} else if (alpha[0][idx]) {
alpha[0][idx] = false;
alpha[1][idx] = true;
n0--;
n1++;
} else {
ok = false;
break;
}
}
if (n2 > 1 || n0 > 1) {
ok = false;
}
for (auto v : alpha) {
for (auto b : v) {
cerr << (b ? 'O' : '-');
}
cerr << endl;
}
if (ok) {
int idx = n0 == 1 ? 0 : 1;
for (int i = 0; i < alpha[idx].size(); i++) {
if (alpha[idx][i]) {
cout << (char)('a' + i) << endl;
}
}
} else {
cout << "Impossible" << endl;
}
return 0;
}