#@target=251 #def simulate(m) # r=m>@target ? -1 : m<@target ? 1 : 0 # @target-=1 # return r #end puts "? 40";STDOUT.flush s=gets.to_i #s=simulate(40) if s==0 puts "! 40";STDOUT.flush;exit elsif s<0 1.upto(40){|i| puts "? 9";STDOUT.flush if gets.to_i==0 #simulate(9)==0 puts "! "+(9+i).to_s exit end } end q=1 l=1;h=10**9 50.times{ m=(h+l+1)/2; puts "? "+m.to_s;STDOUT.flush s=gets.to_i #s=simulate(m) if s==0 puts "! "+(m+q).to_s exit elsif s<0 h=m-1 else l=m+1 end q+=1 l-=1 h-=1 #p [q,l,h,m,@target] }