結果

問題 No.3317 ワロングアンサーロングアンサーンスワロンガー
コンテスト
ユーザー elphe
提出日時 2025-02-24 17:57:58
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
(最新)
AC  
(最初)
実行時間 -
コード長 1,026 bytes
コンパイル時間 762 ms
コンパイル使用メモリ 80,400 KB
実行使用メモリ 7,724 KB
最終ジャッジ日時 2025-10-30 09:41:35
合計ジャッジ時間 3,770 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample WA * 3
other WA * 62
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <cstdint>

using namespace std;

// 第 1 引数に変数、第 2 引数に値をとる
// 両者のうち小さい方で変数 variable を更新
template<typename T> constexpr T chmin(T& variable, const T value) noexcept
{
	if (variable < value) return variable;
	else return (variable = value);
}

int main()
{
	cin.tie(nullptr);
	ios::sync_with_stdio(false);

	uint64_t T, X;
	char S[100'001];
	cin >> T >> X >> S;

	chmin(T, UINT64_C(60));  // T が 60 より大きい意味はない(解説参照)ので、あらかじめ小さくしておく
	const char* p = S;
	--X;
	while (X != 0)
	{
		const auto L = 5 * (UINT64_C(1) << T) - 4;  // なぜか switch 文の中で変数宣言できないので、ここでしておく
		switch (*p)
		{
		case 'w':
			if (T != 0 && X < L) --T, p = "warong";
			else X -= L, ++p;
			break;

		case 'a':
			if (T != 0 && X < L) --T, p = "answer";
			else X -= L, ++p;
			break;

		default:
			--X, ++p;
			break;
		}
	}

	cout << *p << '\n';
	return 0;
}
0