Я столкнулся с этой проблемой, работая над другой задачей, которую я создаю для этого сайта. В этом соревновании я использую « Mario Kart 8 Scoring ». Количество очков, которое игрок получает за k- е место, представлено этим 1-индексированным массивом: [15,12,10,9,8,7,6,5,4,3,2,1]. Таким образом, 1-е место получает 15 баллов, 2-е место - 12 баллов и т. Д.
Достаточно просто назначить такие точки, однако сложная часть связана с тем, как я справляюсь со связями. Что я делаю, так это даю каждому игроку за связывание среднее количество баллов за каждое место за связывание. Например, если только 1 и 2 связаны, то оба игрока получают (15 + 12) / 2 = 13,5 очков. (Примечание: вам разрешено округлять до ближайшего целого, поэтому 13 или 14 также приемлемы.) Затем 3–12-е место получают нормальное количество очков за их позицию.
Вызов
Учитывая 12 неотрицательных целочисленных баллов, которые сортируются по убыванию, выведите количество очков, которое получает каждый игрок. Вы также можете взять список точек [15,12,10,9, ...] в качестве входных данных. Обратите внимание, что количество очков, которое получает каждый игрок, зависит не от фактических значений баллов, а от того, как они сравниваются с другими баллами.
Тестовые случаи
- [21,21,15,14,12,9,6,5,4,3,2,1] => [ 14,14 , 10,9,8,7,6,5,4,3,2, 1]
- [20,15,15,15,10,9,8,7,6,5,4,3] => [15, 10,10,10 , 8,7,6,5,4,3,2, 1]
- объяснение: (12 + 10 + 9) / 3 = 10,3333
- [1,1,1,1,1,1,1,1,1,1,1,1] => [ 7,7,7,7,7,7,7,7,7,7,7, 7 ]
- объяснение: (15 + 12 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1) / 12 = 6,8333
- [20,20,20,20,10,10,10,9,8,7,6,5] => [ 12,12,12,12 , 7,7,7 , 5,4,3,2, 1]
- объяснение: (15 + 12 + 10 + 9) / 4 = 11,5, (8 + 7 + 6) / 3 = 7
- [100,99,98,95,95,95,94,93,93,92,91,91] => [15,12,10, 8,8,8 , 6, 5,5 , 3, 2, 2 ]
- объяснение: (9 + 8 + 7) / 3 = 8, (5 + 4) / 2 = 4,5, (2 + 1) / 2 = 1,5
Связанный: Оцените список оценок с "пропусками"