Submission #5912085
Source Code Expand
k = gets.to_i rs = (2**k).times.map{ gets.to_i } res = Array.new(k+1){Array.new(rs.size)} def rate(a, b) r = 1.0 / (1 + 10**((b-a)/400.0)) return r end rs.size.times{|i| res[0][i] = 1 } (1..res.size-1).each do |ki| rs.size.times{|p| base = ((p / 2**ki))*(2**ki) already_won = ((p / 2**(ki-1)))*(2**(ki-1)) already_won_ary = (already_won..already_won+(2**(ki-1))-1) win_rate = 0 (base..(base+(2**ki)-1)).each{|oppo| unless already_won_ary.include?(oppo) rate = rate(rs[p], rs[oppo]) * res[ki-1][oppo] win_rate += rate end } res[ki][p] = win_rate * res[ki-1][p] } end rs.size.times do |p| puts sprintf("%.9f", res.last[p].to_f) end
Submission Info
Submission Time | |
---|---|
Task | C - トーナメント |
User | somurie06 |
Language | Ruby (2.3.3) |
Score | 4 |
Code Size | 736 Byte |
Status | AC |
Exec Time | 671 ms |
Memory | 1916 KB |
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 4 / 4 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | 00, 01, 02, 03, 90, 91 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00 | AC | 635 ms | 1916 KB |
01 | AC | 671 ms | 1916 KB |
02 | AC | 554 ms | 1916 KB |
03 | AC | 655 ms | 1916 KB |
90 | AC | 7 ms | 1788 KB |
91 | AC | 7 ms | 1788 KB |