Задача Е. Алиса и команда
Имя входного файла:
Имя выходного файла:
Ограничение по времени:
Ограничение по памяти:
Казахстан, 12 марта, 2023
Великий Алижан как староста курса просит красавиц Алису и Даяну создать лучшую команду
курса для хакатона. По правилам хакатона нужно создать команду ровно из 4 людей и для каж-
дого определить одну роль. Невозможно участвовать в разработке проекта без: фронтенд, бэкенд,
мобильного разработчика и дизайнера. Всего с курса отозвались и людей, -й из которых имеет уро-
вень front,,backi, mobile,, design, в соответствующей сфере. Сила команды определяется как сумма
уровней всех участководы в выбранных для них ролях. Так как красавица Алиса упорно
решает задачи с Leetcode, а красавица Даяна помогает студентам они просят вас разобраться с
задачей.
6
17 7 10 1
15 18 4 9
6 21 23 13
13 8 2 17
19 12 21 12
6 19 20 20
стандартный ввод
стандартный вывод
2 секунды
256 мегабайт
Формат входных данных
Входные данные состоят числа студентов и (4 5 и 10²). Далее идут в строк состоящие из
front,, backi, mobile,, design, для i-го студента. (0 < front,, backi, mobile,, design, < 10").
Формат выходных данных
Посчитайте силу лучшей команды курса.
Пример
стандартный ввод
80
стандартный выпол
Замечание
В первом примере: на фронтенд нужно взять 5го
мобильную разработку зго дизайнером 6го человека.
fronts+backz + mobiles + designs - 19 + 18 + 23 + 20 - 80.
"
человока Ha бженд 2го, на
Сила такой команды будет


master32wsp: Мда... Условие можно было бы и получше предоставить, сложно читать, ну попробую
Maish: прости:(

Ответы

Ответ дал: sme41691
1

n = int(input())

levels = [[0, 0] for _ in range(4)] # список для каждой роли, [сумма уровней, номер студента]

for i in range(n):

skills = list(map(int, input().split()))

for j in range(4):

levels[j][0] += skills[j]

if skills[j] > levels[j][1]:

levels[j][1] = skills[j]

levels.sort(reverse=True) # сортируем по убыванию суммы уровней

team_levels = sum(l[1] for l in levels[:4]) # выбираем первые 4 элемента и складываем их уровни

print(team_levels)

В этом примере команда должна состоять из студентов с навыками: backi у 3-го студента, mobile у 4-го студента, design у 6-го студента и front у 5-го студента. Их суммарные уровни равны 23 + 17 + 20 + 27 = 87.


master32wsp: Этот код даёт 83 на примере, который в задании
master32wsp: Мой тоже так может
n = int(input())
students = []
for i in range(n):
front, back, mobile, design = map(int, input().split())
students.append((front, back, mobile, design))

students.sort(key=lambda x: max(x), reverse=True)

best_team = []
for skill_type in range(4):
best_student = students[0]
for student in students:
if student[skill_type] > best_student[skill_type]:
best_student = student
best_team.append(best_student[skill_type])

print(sum(best_team))
Ответ дал: master32wsp
0

У меня закончились идеи как сделать это без 4-х форов, так что вот этот код наверняка привысит лимит по времени, но может быть хоть сколько то баллов наберёт:

n = int(input())

students = []

for i in range(n):

   student = tuple(map(int, input().split()))

   students.append(student)

max_strength = 0

for f in range(n):

   for b in range(n):

       for m in range(n):

           for d in range(n):

               if len(set((f, b, m, d))) == 4:  # Убеждаемся, что участники не совпадают

                   strength = students[f][0] + students[b][1] + students[m][2] + students[d][3]

                   max_strength = max(max_strength, strength)

print(max_strength)

Самое близкое к правде, что я придумал это код без 4-х проходов, но он выдаёт 83, а не 80 на твоём примере.


master32wsp: Тут наверное надо за помощью не в знания обращаться, а куда нибудь посерьёзнее, задание не простое
Вас заинтересует