結果
問題 |
No.1187 皇帝ペンギン
|
ユーザー |
|
提出日時 | 2025-05-06 22:06:37 |
言語 | C# (.NET 8.0.404) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,041 bytes |
コンパイル時間 | 10,745 ms |
コンパイル使用メモリ | 172,256 KB |
実行使用メモリ | 47,076 KB |
平均クエリ数 | 22.04 |
最終ジャッジ日時 | 2025-05-06 22:07:06 |
合計ジャッジ時間 | 19,139 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 42 WA * 12 |
コンパイルメッセージ
復元対象のプロジェクトを決定しています... /home/judge/data/code/main.csproj を復元しました (106 ミリ秒)。 main -> /home/judge/data/code/bin/Release/net8.0/main.dll main -> /home/judge/data/code/bin/Release/net8.0/publish/
ソースコード
using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static long[] NList => ReadLine().Split().Select(long.Parse).ToArray(); public static void Main() { Solve(); } static void Solve() { var prime = Enumerable.Repeat(true, 1014).ToArray(); prime[0] = false; prime[1] = false; var plist = new List<int>(); for (var i = 2; i < prime.Length; ++i) if (prime[i]) { plist.Add(i); for (var j = i * 2; j < prime.Length; j += i) prime[j] = false; } var safe2 = IsSafe(2); var safe3 = IsSafe(3); if (!safe2 && !safe3) { WriteLine(IsSafe(1) ? "! 1" : "! 0"); return; } var ok = 0; var ng = plist.Count; while (ng - ok > 1) { var mid = (ok + ng) / 2; if (IsSafe(plist[mid])) ok = mid; else { if (IsSafe(plist[mid + 1])) { var ok2 = mid + 1; while (ng - ok2 > 1) { var mid2 = (ok2 + ng) / 2; if (IsSafe(plist[mid2])) ok2 = mid2; else ng = mid2; } break; } else ng = mid; } } for (var i = plist[ng + 1] - 1; i >= plist[ng - 1]; --i) { if (i % 2 == 0 && !safe2) continue; if (i % 3 == 0 && !safe3) continue; if (i == plist[ng]) continue; if (i >= 1000) continue; if (IsSafe(i)) { WriteLine("! " + i); return; } } } static bool IsSafe(int n) { WriteLine($"? {n}"); return ReadLine() == "safe"; } }