Submission #3779499


Source Code Expand

k = int(input())
n = 2**k
r = [int(input()) for i in range(2**k)]

def winrate(a,b):
    return 1/(1+pow(10, (r[b]-r[a])/400))

def vs_range(ind, round):
    offset = (2**round)*(ind//(2**round))
    #print(offset)
    if ind >= offset+2**(round-1):
        return range(offset,offset+2**(round-1))
    else:
        return range(offset+2**(round-1),offset+2**round)
dp = [[0]*n for i in range(k+1)]
dp[0] = [1]*n
for round in range(1, k+1):
    for i in range(n):
        tmp = 0
        for j in vs_range(i,round):
            tmp += winrate(i, j)*dp[round-1][j]
        tmp *= dp[round-1][i]
        dp[round][i] = tmp
for i in dp[-1]:
    print("{:.9f}".format(i))

Submission Info

Submission Time
Task C - トーナメント
User tomboftime
Language Python (3.4.3)
Score 4
Code Size 692 Byte
Status AC
Exec Time 963 ms
Memory 3572 KB

Judge Result

Set Name All
Score / Max Score 4 / 4
Status
AC × 6
Set Name Test Cases
All 00, 01, 02, 03, 90, 91
Case Name Status Exec Time Memory
00 AC 928 ms 3572 KB
01 AC 963 ms 3572 KB
02 AC 752 ms 3572 KB
03 AC 937 ms 3572 KB
90 AC 18 ms 3064 KB
91 AC 18 ms 3064 KB