結果
| 問題 | No.594 壊れた宝物発見機 |
| コンテスト | |
| ユーザー |
👑 |
| 提出日時 | 2026-11-05 22:30:14 |
| 言語 | C# (.NET 10.0.403 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 376 ms / 2,000 ms |
| + 999µs | |
| コード長 | 1,844 bytes |
| 記録 | |
| コンパイル時間 | 10,314 ms |
| コンパイル使用メモリ | 169,456 KB |
| 実行使用メモリ | 33,024 KB |
| 平均クエリ数 | 67.25 |
| 最終ジャッジ日時 | 2026-11-05 22:30:31 |
| 合計ジャッジ時間 | 10,188 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge7_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 20 |
コンパイルメッセージ
復元対象のプロジェクトを決定しています... /home/judge/data/code/main.csproj を復元しました (210 ミリ秒)。 main -> /home/judge/data/code/bin/Release/net10.0/main.dll main -> /home/judge/data/code/bin/Release/net10.0/publish/
ソースコード
using System;
using static System.Console;
using System.Linq;
using System.Collections.Generic;
class Program
{
static long NN => long.Parse(ReadLine());
static int[] NList => ReadLine().Split().Select(int.Parse).ToArray();
static int[][] NArr(long n) => Enumerable.Repeat(0, (int)n).Select(_ => NList).ToArray();
public static void Main()
{
Solve();
}
static void Solve()
{
var x = Calc(0);
var y = Calc(1);
var z = Calc(2);
WriteLine($"! {x} {y} {z}");
}
static int Calc(int rotate)
{
var dp = Enumerable.Repeat(-1L, 301).ToArray();
var offset = 150;
dp[0] = Que(-150, 0, 0, rotate);
dp[1] = Que(-149, 0, 0, rotate);
if (dp[0] < dp[1]) return -150;
dp[300] = Que(150, 0, 0, rotate);
dp[299] = Que(149, 0, 0, rotate);
if (dp[300] < dp[299]) return 150;
var left = -150;
var right = 150;
while (true)
{
var mid1 = (left * 2 + right) / 3;
var mid2 = (left + right * 2) / 3;
if (dp[mid1 + offset] < 0) dp[mid1 + offset] = Que(mid1, 0, 0, rotate);
if (dp[mid2 + offset] < 0) dp[mid2 + offset] = Que(mid2, 0, 0, rotate);
if (right - left == 2)
{
if (dp[mid1 + offset] < dp[mid2 + offset]) return mid1;
else return mid2;
}
if (dp[mid1 + offset] < dp[mid2 + offset]) right = mid2;
else left = mid1;
}
}
static long Que(int x, int y, int z, int rotate)
{
if (rotate == 0) WriteLine($"? {x} {y} {z}");
else if (rotate == 1) WriteLine($"? {z} {x} {y}");
else if (rotate == 2) WriteLine($"? {y} {z} {x}");
return NN;
}
}