Решение задачи Турнир с Яндекс Контест

Без пояснения   Просмотров: 2652


В турнире по хоккею участвовало K команд, каждая сыграла с каждой по одному матчу. За победу команда получала 2 очка, за ничью – 1, за поражение – 0 очков.

Известно, сколько очков в итоге получила каждая команда, однако результаты конкретных матчей были утеряны. Требуется восстановить одну из возможных турнирных таблиц.


Код

n = int(input())
a = list(map(int, input().split()))
idx = [i for i in range(n)]
d = []
# print('a = ', a)
# print('idx = ', idx)
for i in range(n):
    d.append([0] * n)
# print('h_a = ', h_a)
# print('h_idx', h_idx)
for i in range(n - 1):
    h_a, h_idx = a, idx
    h_a, h_idx = zip(*sorted(zip(h_a, h_idx)))
    h_a = list(h_a)
    h_idx = list(h_idx)
    for j in range(i + 1, n):
        if d[h_idx[i]][h_idx[j]] > 0:
            continue
        elif h_a[i] > 0:
            d[h_idx[i]][h_idx[j]] = 1
            d[h_idx[j]][h_idx[i]] = 1
            h_a[i] -= 1
            a[h_idx[j]] -= 1
        elif h_a[i] == 0:
            d[h_idx[j]][h_idx[i]] = 2
            a[h_idx[j]] -= 2
    a[h_idx[i]] = -i - 1
for i in range(n):
    print(*d[i])

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться



Заявка на расчет