結果
問題 |
No.3266 岩井星人は見ずにはいられない
|
ユーザー |
|
提出日時 | 2025-09-06 15:40:59 |
言語 | C# (.NET 8.0.404) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,870 bytes |
コンパイル時間 | 13,035 ms |
コンパイル使用メモリ | 170,224 KB |
実行使用メモリ | 39,972 KB |
最終ジャッジ日時 | 2025-09-06 15:41:16 |
合計ジャッジ時間 | 14,611 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | WA * 4 |
other | WA * 10 TLE * 1 -- * 20 |
コンパイルメッセージ
復元対象のプロジェクトを決定しています... /home/judge/data/code/main.csproj を復元しました (104 ミリ秒)。 main -> /home/judge/data/code/bin/Release/net8.0/main.dll main -> /home/judge/data/code/bin/Release/net8.0/publish/
ソースコード
#nullable enable #region var _input = Array.Empty<string>(); var _iter = 0; string String() { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Split(' '), 0); return _input[_iter++]; } T I<T>() where T : IParsable<T> => T.Parse(String(), null); #endregion var n = I<int>(); var a = I<long>(); var s = String().Select(c => c - '0').ToArray(); var ss = new int[n * 2 + 1]; for (var i = 1; i <= n * 2; i++) ss[i] = ss[i - 1] + s[i % n]; var nexts = new int[n]; nexts.AsSpan().Fill(-1); long G(int p, long k) { var dk = ss[p + n] - ss[p]; var rep = k / dk; k -= rep * dk; return rep * n + F(p, k, 1); } long F(int p, long k, int last) { if (last < 2 && nexts[p] >= 0) { var t = p; var res = 0L; var sdk = 0; while (true) { var next = nexts[t]; var dk = ss[next] - ss[t]; if (next <= t) dk = ss[next + n] - ss[t]; dk--; if (dk >= k) return res + F(t, k, 2); k -= dk; sdk += dk; res += next - t; if (next <= t) res += n; t = next; if (t == p) break; } var rep = k / sdk; res *= rep + 1; k -= rep * sdk; if (k == 0) return res; return res + F(p, k, last); } var r = 1200; var i = 0; var j = p; while (true) { if (last < 2 && i >= n) break; if (r > 1200) { nexts[p] = j; var d = j - p; if (d <= 0) d += n; return F(j, k, last) + d; } if (s[j] == 0) r--; else { if (r < 1200) k--; r++; if (k == 0) return i + 1; } j++; if (j == n) j = 0; } return G(p, k) + n; } var ans = F(0, a, 0); Console.WriteLine(ans);