結果
| 問題 | No.3673 未来予知 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-09-05 00:53:25 |
| 言語 | C# (.NET 10.0.400 + ACL) |
| 結果 |
WA
不安定
|
| 実行時間 | - |
| コード長 | 1,938 bytes |
| 記録 | |
| コンパイル時間 | 13,387 ms |
| コンパイル使用メモリ | 173,448 KB |
| 実行使用メモリ | 203,352 KB |
| 最終ジャッジ日時 | 2026-09-05 00:53:44 |
| 合計ジャッジ時間 | 12,769 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | WA * 3 |
| other | WA * 32 |
コンパイルメッセージ
復元対象のプロジェクトを決定しています... /home/judge/data/code/main.csproj を復元しました (89 ミリ秒)。 main -> /home/judge/data/code/bin/Release/net10.0/main.dll main -> /home/judge/data/code/bin/Release/net10.0/publish/
ソースコード
#nullable enable
#region
var (_input, _iter) = (Array.Empty<string>(), 0);
T I<T>() where T : IParsable<T>
{
while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Trim().Split(' '), 0);
return T.Parse(_input[_iter++], null);
}
#endregion
var ciz = "RSPX".ToList();
var shifts = new[]{ 13, -17, 5 };
var t = new uint[100];
{
var str = I<string>();
for (var i = 0; i < 100; i++) t[i] = (uint)ciz.FindIndex(e => e == str[i]);
}
var n = I<int>();
var s = new uint[32];
var l = new uint[200];
var r = new uint[200];
for (var i = 0; i < 32; i++) s[i] = 1U << i;
for (var ti = 0; ti < 100; ti++)
{
foreach (var shift in shifts)
{
var ns = s.AsSpan().ToArray();
for (var i = 0; i < 32; i++)
{
var j = i + shift;
if (0 <= j && j < 32) ns[j] ^= s[i];
}
s = ns;
}
var h = t[ti];
l[ti * 2] = s[0];
r[ti * 2] = h & 1;
l[ti * 2 + 1] = s[1];
r[ti * 2 + 1] = (h >> 1) & 1;
}
var used = new bool[200];
for (var i = 0; i < 32; i++)
{
var f = -1;
for (var j = 0; j < 200; j++)
{
var v = l[j];
if (used[j] || (v & (1U << i)) == 0) continue;
f = j;
used[f] = true;
break;
}
for (var j = 0; j < 200; j++) if (j != f)
{
var v = l[j];
if ((v & (1U << i)) == 0) continue;
l[j] ^= l[f];
r[j] ^= r[f];
}
}
var state = 0U;
for (var i = 0; i < 200; i++)
{
if (r[i] == 0) continue;
var f = -1;
for (var j = 0; j < 32; j++)
{
if ((l[i] & (1U << j)) == 0) continue;
if (f >= 0) throw new Exception();
f = j;
}
if (f < 0) throw new Exception();
state ^= 1U << f;
}
var ans = new char[n];
for (var i = 0; i < n; i++)
{
state ^= state << 13;
state ^= state >> 17;
state ^= state << 5;
var j = (state + 3) & 3;
ans[i] = ciz[(int)j];
}
Console.WriteLine(new string(ans));