結果
| 問題 |
No.282 おもりと天秤(2)
|
| コンテスト | |
| ユーザー |
siman
|
| 提出日時 | 2022-01-13 04:43:42 |
| 言語 | Ruby (3.4.1) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 763 bytes |
| コンパイル時間 | 200 ms |
| コンパイル使用メモリ | 7,296 KB |
| 実行使用メモリ | 31,192 KB |
| 平均クエリ数 | 1.96 |
| 最終ジャッジ日時 | 2024-11-15 23:51:51 |
| 合計ジャッジ時間 | 7,600 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 2 RE * 22 |
コンパイルメッセージ
Syntax OK
ソースコード
N = gets.to_i
omori = [*1..N]
R = Array.new(N + 1) { Array.new(N + 1, 0) }
def send_query(stack)
query = Array.new(2 * N, 0)
stack.each_with_index do |(i, j), idx|
break if idx >= N
query[2 * idx] = i
query[2 * idx + 1] = j
end
STDOUT.puts("? #{query.join(' ')}")
STDOUT.flush
res = gets.chomp.split
res.each_with_index do |r, idx|
i, j = stack[idx]
break if i.nil?
if r == '<'
R[i][j] = -1
R[j][i] = 1
else
R[i][j] = 1
R[j][i] = -1
end
end
end
loop do
stack = []
omori.sort { |i, j|
if R[i][j] == 0
stack << [i, j]
-1
else
R[i][j]
end
}
break if stack.empty?
send_query(stack)
end
omori.sort! { |i, j| R[i][j] }
puts "! #{omori.join(' ')}"
siman