Я зіткнувся з цією проблемою, працюючи над іншим завданням, яке я роблю для цього сайту. У цьому виклику я використовую " Маріо Карт 8 очок ". Сума балів, яку отримує гравець у 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 балів. (Примітка. Вам дозволяється кругообіг до найближчого int, тому 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