結果
| 問題 | 
                            No.1830 Balanced Majority
                             | 
                    
| コンテスト | |
| ユーザー | 
                             siman
                         | 
                    
| 提出日時 | 2022-02-05 15:14:28 | 
| 言語 | Ruby  (3.4.1)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 563 bytes | 
| コンパイル時間 | 365 ms | 
| コンパイル使用メモリ | 7,552 KB | 
| 実行使用メモリ | 29,440 KB | 
| 平均クエリ数 | 17.50 | 
| 最終ジャッジ日時 | 2024-06-11 13:34:53 | 
| 合計ジャッジ時間 | 4,175 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge4 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | WA * 1 | 
| other | AC * 3 WA * 22 | 
コンパイルメッセージ
Syntax OK
ソースコード
N = gets.to_i
def send_query(k)
  STDOUT.puts("? #{k}")
  STDOUT.flush
  gets.to_i
end
s_1 = send_query(1)
s_n_1 = send_query(N - 1)
if s_1 == s_n_1
  puts "! #{2} #{N - 1}"
  exit
end
l = 2
r = N - 1
18.times do
  k = (l + r) / 2
  s = send_query(k)
  rs = k - s
  diff = s - rs
  if diff == 0
    if k < N / 2
      puts "! #{k + 1} #{N}"
    else
      puts "! 1 #{k}"
    end
    exit
  elsif s_1 < 0 && diff < 0
    l = k
  elsif s_1 > 0 && diff < 0
    r = k
  elsif s_n_1 < 0 && diff < 0
    r = k
  elsif s_n_1 < 0 && diff > 0
    l = k
  end
end
            
            
            
        
            
siman