Submission #58038450
Source Code Expand
N,M,Q = gets.split.map(&:to_i) # 1000,10,950
Ask,Ans = lambda{
if $debug
Coins = -1,*[*[1]*M,*[0]*(N-M)].shuffle
end
qc = 0
next lambda{|x,y|
if Q<qc += 1
warn 'QC over'
exit 1
end
if [x,y].any?{|x| x<1||N<x }
warn "Invalid coins (#{x},#{y}) "
exit 1
end
if $debug
a = "#{Coins[x]^Coins[y]}"
else
puts "? #{x} #{y}"
$stdout.flush
a = gets[0]
end
next 0 if a==?0
next 1 if a==?1
warn "Rejected"
exit 1
},lambda{|as|
warn "Answered (#{as.sort*?,})"
puts [?!,*as]*' '
if $debug
warn "Answer (#{(1..N).select{|i| 0<Coins[i] }*?,})"
end
exit 0
}
}.call
F = lambda{|n,m,hint=nil| # n:1..N; m:0..M
k = N-n+1
b = [m,[k-m,10].min].min
cs,ol = [0],[1,0]
until b<ol.max || cs.size==k
cs.push cs[-1]^Ask[n+cs.size-1,n+cs.size]
ol[cs[-1]] += 1
end
if m<k-m || 10<ol.max # 多数派が偽物ではありえないほど多くなった
cs.map!{|c| 1-c } unless b<ol[0]
elsif k-m<m # 多数が本物ではありえないほど多くなった
cs.map!{|c| 1-c } unless b<ol[1]
else # 同数
cs.map!{|c| 1-c } if 1==Ask[hint,n+cs.index(1)]
end
next cs
}
C,OI,hint = [-1],[0,0]
C.concat F[C.size,M-OI[1],hint].tap{|cs|
i = cs.index 1
hint ||= C.size+i if i
cs.each{|c| OI[c] += 1 }
} until N<C.size
Ans[(1..N).select{|i| 0<C[i] }]
Submission Info
| Submission Time | |
|---|---|
| Task | A - Appraiser |
| User | ds14050 |
| Language | Ruby (ruby 3.2.2) |
| Score | 600 |
| Code Size | 1343 Byte |
| Status | AC |
| Exec Time | 112 ms |
| Memory | 17620 KiB |
Judge Result
| Set Name | All | ||
|---|---|---|---|
| Score / Max Score | 600 / 600 | ||
| Status |
|
| Set Name | Test Cases |
|---|---|
| All | test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| test_01.txt | AC | 112 ms | 17444 KiB |
| test_02.txt | AC | 51 ms | 17432 KiB |
| test_03.txt | AC | 50 ms | 17512 KiB |
| test_04.txt | AC | 49 ms | 17504 KiB |
| test_05.txt | AC | 51 ms | 17196 KiB |
| test_06.txt | AC | 50 ms | 17488 KiB |
| test_07.txt | AC | 49 ms | 17596 KiB |
| test_08.txt | AC | 50 ms | 17496 KiB |
| test_09.txt | AC | 51 ms | 17588 KiB |
| test_10.txt | AC | 51 ms | 17488 KiB |
| test_11.txt | AC | 98 ms | 17504 KiB |
| test_12.txt | AC | 98 ms | 17620 KiB |
| test_13.txt | AC | 97 ms | 17480 KiB |
| test_14.txt | AC | 99 ms | 17384 KiB |
| test_15.txt | AC | 98 ms | 17452 KiB |
| test_16.txt | AC | 98 ms | 17516 KiB |
| test_17.txt | AC | 99 ms | 17592 KiB |
| test_18.txt | AC | 98 ms | 17380 KiB |
| test_19.txt | AC | 98 ms | 17572 KiB |
| test_20.txt | AC | 99 ms | 17324 KiB |
| test_21.txt | AC | 48 ms | 17516 KiB |
| test_22.txt | AC | 49 ms | 17612 KiB |
| test_23.txt | AC | 48 ms | 17480 KiB |
| test_24.txt | AC | 47 ms | 17508 KiB |
| test_25.txt | AC | 48 ms | 17584 KiB |
| test_26.txt | AC | 47 ms | 17500 KiB |
| test_27.txt | AC | 47 ms | 17616 KiB |
| test_28.txt | AC | 47 ms | 17408 KiB |
| test_29.txt | AC | 47 ms | 17576 KiB |
| test_30.txt | AC | 48 ms | 17584 KiB |
| test_31.txt | AC | 48 ms | 17476 KiB |
| test_32.txt | AC | 47 ms | 17484 KiB |
| test_33.txt | AC | 49 ms | 17532 KiB |
| test_34.txt | AC | 47 ms | 17520 KiB |
| test_35.txt | AC | 48 ms | 17444 KiB |
| test_36.txt | AC | 49 ms | 17596 KiB |
| test_37.txt | AC | 48 ms | 17188 KiB |
| test_38.txt | AC | 47 ms | 17604 KiB |
| test_39.txt | AC | 48 ms | 17484 KiB |
| test_40.txt | AC | 48 ms | 17440 KiB |
| test_41.txt | AC | 47 ms | 17528 KiB |
| test_42.txt | AC | 47 ms | 17532 KiB |
| test_43.txt | AC | 47 ms | 17500 KiB |
| test_44.txt | AC | 47 ms | 17448 KiB |
| test_45.txt | AC | 47 ms | 17516 KiB |
| test_46.txt | AC | 47 ms | 17568 KiB |
| test_47.txt | AC | 48 ms | 17236 KiB |
| test_48.txt | AC | 48 ms | 17484 KiB |
| test_49.txt | AC | 48 ms | 17504 KiB |
| test_50.txt | AC | 47 ms | 17564 KiB |