結果

問題 No.517 壊れたアクセサリー
ユーザー BwambocosBwambocos
提出日時 2017-05-28 21:58:12
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
WA  
実行時間 -
コード長 1,917 bytes
コンパイル時間 1,759 ms
コンパイル使用メモリ 173,264 KB
実行使用メモリ 4,348 KB
最終ジャッジ日時 2023-10-21 14:11:01
合計ジャッジ時間 2,531 ms
ジャッジサーバーID
(参考情報)
judge9 / judge14
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
4,348 KB
testcase_01 WA -
testcase_02 AC 2 ms
4,348 KB
testcase_03 WA -
testcase_04 AC 2 ms
4,348 KB
testcase_05 AC 2 ms
4,348 KB
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 WA -
testcase_12 WA -
testcase_13 AC 2 ms
4,348 KB
testcase_14 WA -
testcase_15 WA -
testcase_16 WA -
testcase_17 WA -
testcase_18 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include "bits/stdc++.h"
#define MOD 1000000007
#define INF 11234567890
#define in std::cin
#define out std::cout
#define rep(i,N) for(LL i=0;i<N;++i)
typedef long long int LL;

int N, M;
std::string A[30], B[30];
std::string ans;

int main()
{
	in >> N;
	rep(i, N) { in >> A[i]; }
	in >> M;
	rep(i, M) { in >> B[i]; }

	ans = A[0];
	while (true)
	{
		bool ok = false;
		rep(i, N)
		{
			rep(j, A[i].length())
			{
				if (A[i][j] == ans[ans.length() - 1])
				{
					bool flag = true;
					int cou = 0;
					rep(k, j)
					{
						if (ans[ans.length() - j - 1 + k] != A[i][k])
						{
							flag = false;
							break;
						}
					}
					if (flag)
					{
						ok = true;
						ans = ans.substr(0, ans.length() - (j + 1)) + A[i];
						A[i].erase();
					}
				}
				if (A[i][j] == ans[0])
				{
					bool flag = true;
					int cou = 0;
					for (int k = j; k < std::min(ans.length(), A[i].length()); ++k)
					{
						if (ans[k] != A[i][k])
						{
							flag = false;
							break;
						}
					}
					if (flag)
					{
						ok = true;
						ans = A[i].substr(0, j) + ans;
						A[i].erase();
					}
				}
			}
			rep(j, B[i].length())
			{
				if (B[i][j] == ans[ans.length() - 1])
				{
					bool flag = true;
					int cou = 0;
					rep(k, j)
					{
						if (ans[ans.length() - j - 1 + k] != B[i][k])
						{
							flag = false;
							break;
						}
					}
					if (flag)
					{
						ok = true;
						ans = ans.substr(0, ans.length() - (j + 1)) + B[i];
						B[i].erase();
					}
				}
				if (B[i][j] == ans[0])
				{
					bool flag = true;
					int cou = 0;
					for (int k = j; k < std::min(ans.length(), B[i].length()); ++k)
					{
						if (ans[k] != B[i][k])
						{
							flag = false;
							break;
						}
					}
					if (flag)
					{
						ok = true;
						ans = B[i].substr(0, j) + ans;
						B[i].erase();
					}
				}
			}
		}
		if (!ok) { break; }
	}

	out << ans << std::endl;
	return 0;
}
0