結果
問題 | No.517 壊れたアクセサリー |
ユーザー |
|
提出日時 | 2017-05-28 21:45:03 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 2,420 bytes |
コンパイル時間 | 1,678 ms |
コンパイル使用メモリ | 169,004 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-21 15:21:33 |
合計ジャッジ時間 | 2,414 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 15 |
コンパイルメッセージ
main.cpp: In function 'i32 main()': main.cpp:15:23: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 15 | #define out(...) _out(" ", "\n", __VA_ARGS__) | ^~~ main.cpp:99:25: note: in expansion of macro 'out' 99 | out(-1); | ^~~ main.cpp:15:28: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 15 | #define out(...) _out(" ", "\n", __VA_ARGS__) | ^~~~ main.cpp:99:25: note: in expansion of macro 'out' 99 | out(-1); | ^~~ main.cpp:15:23: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 15 | #define out(...) _out(" ", "\n", __VA_ARGS__) | ^~~ main.cpp:104:9: note: in expansion of macro 'out' 104 | out(ans); | ^~~ main.cpp:15:28: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] 15 | #define out(...) _out(" ", "\n", __VA_ARGS__) | ^~~~ main.cpp:104:9: note: in expansion of macro 'out' 104 | out(ans); | ^~~
ソースコード
#define _CRT_SECURE_NO_WARNINGS#define _USE_MATH_DEFINES#include <bits/stdc++.h>using namespace std;using i32 = int; using i64 = long long int; using f64 = double; using str = string;template <typename T> using vec = vector<T>;template <typename T> using heap = priority_queue<T>;void in() {}; template <typename T, typename...TS> void in(T &&x, TS &&...xs) { cin >> x; in(move(xs)...); };template <typename T> void _out(char *sep, char *end, T &&x) { cout << x << end; };template <typename T, typename...TS> void _out(char *sep, char *end, T &&x, TS &&...xs) { cout << x << sep; _out(sep, end, move(xs)...); }#define indef(t, ...) t __VA_ARGS__; in(__VA_ARGS__)#define get(t) []{ t _; cin >> _; return _; }()#define put(...) _out("", "", __VA_ARGS__)#define out(...) _out(" ", "\n", __VA_ARGS__)#define times(n, i) for (i32 i = 0 ; i < (n); ++i)#define range(a, b, i) for (i32 i = (a); i < (b); ++i)#define upto(a, b, i) for (i32 i = (a); i <= (b); ++i)#define downto(a, b, i) for (i32 i = (a); i >= (b); --i)#define all(xs) (xs).begin(), (xs).end()#define sortall(xs) sort(all(xs))#define reverseall(xs) reverse(all(xs))#define even(x) (((x) & 1) == 0)#define odd(x) (((x) & 1) == 1)#define append emplace_back#define findge lower_bound#define findgt upper_boundconst i64 MOD = 1000000007;const f64 EPS = 1e-10;i32 l[26], r[26];bool q[26];i32 main(){memset(l, -1, sizeof(l));memset(r, -1, sizeof(r));indef(i32, n);times(n, _) {indef(str, a);range(1, a.size(), i) {l[a[i] - 'A'] = a[i - 1] - 'A';}range(0, a.size() - 1, i) {r[a[i] - 'A'] = a[i + 1] - 'A';}for (char c : a) {q[c - 'A'] = true;}}indef(i32, m);times(m, _) {indef(str, b);range(1, b.size(), i) {l[b[i] - 'A'] = b[i - 1] - 'A';}range(0, b.size() - 1, i) {r[b[i] - 'A'] = b[i + 1] - 'A';}for (char c : b) {q[c - 'A'] = true;}}str ans = "";times(26, i) {if (r[i] == -1) continue;i32 t = i;while (l[t] > -1) {t = l[t];}while (r[t] > -1) {ans += 'A' + t;t = r[t];}ans += 'A' + t;break;}i32 cnt = 0;times(26, i) {cnt += q[i] ? 1 : 0;}if (cnt == 1) {ans = "";times(26, i) {if (q[i]) {ans += 'A' + i;}}}bool w[26] = {};for (char c : ans) {w[c - 'A'] = true;}times(26, i) {if (w[i] != q[i]) {out(-1);return 0;}}out(ans);return 0;}