Заблокирован

Командная олимпиада

25.11.2021, 23:18. Показов 1768. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У кого-то склонность к программированию, у кого-то склонность к математике, а у остальных — к физкультуре. Таким образом, для каждого школьника известна величина ti:

ti = 1, если i-й школьник имеет склонность к программированию,
ti = 2, если i-й школьник имеет склонность к математике,
ti = 3, если i-й школьник имеет склонность к физкультуре
Так сложилось, что каждый школьник имеет склонность ровно к одному из этих трех предметов.

На командную олимпиаду по научному многоборью требуются команды по три человека. Учителя школы решили, что команды будут составлены из трех школьников со склонностями к разным предметам. Иными словами, в каждой команде должен быть один математик, один программист и один спортсмен. Разумеется, каждый учащийся может быть членом не более чем одной команды.

Какое наибольшее количество команд школа сможет выставить на олимпиаду? Как для этого следует формировать команды?

Входные данные:
В первой строке записано целое число n (1 ≤ n ≤ 5000) — количество учащихся в школе. Во второй строке записаны n целых чисел t1, t2, ..., tn (1 ≤ ti ≤ 3), где ti описывает склонность i-го школьника.


Выходные данные:
В первой строке выведите целое число w — искомое наибольшее количество команд.

Далее выведите w строк по три числа в каждой строке. Каждая такая тройка должна обозначать номера школьников, образующих команду. Как команды, так и числа в тройках можно выводить в любом порядке. Школьники пронумерованы целыми числами от 1 до n в порядке их описания во входных данных. Каждый школьник должен участвовать не более чем в одной команде. Если решений несколько, выведите любое.

Если ни одну команду невозможно составить, то выведите единственную строку со значением w равным 0.




Примеры:


входные данные
7
1 3 1 3 2 1 2
выходные данные
2
3 5 2
6 7 4


входные данные
2 1 1 2
выходные данные
0
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.11.2021, 23:18
Ответы с готовыми решениями:

Олимпиада 5
Студент компьютерного отделения ВСП «СФК НАУ» записывает музыку с плеера флешку. Проверить, поместится ли на флешку последняя...

Олимпиада
Студенты компьютерного отделения ОСП «СФК НАУ» решили сделать флешмоб соединение корпуса А и корпуса Б. Флешмоб состоит в том, что...

Олимпиада 4
Студенты компьютерного отделения ВСП «СФК НАУ» принимают участие в олимпиаде по программирование. С первого курса в олимпиаде принимает...

3
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
26.11.2021, 04:20
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def count_and_print_teams(t_list):
    list_1 = []
    list_2 = []
    list_3 = []
    
    big_list =[list_1, list_2, list_3]
    
    for i in range( len(t_list) ):
        t = t_list[i]
        big_list[t-1].append(i)
        
    w = len(t_list)
    for lis in big_list:
        if len(lis) < w:
            w = len(lis)
            
    print(w)
    for i in range(w):
        s = str()
        for lis in big_list:
            s += str(lis[i] + 1) + ' '
        print(s)
#===============================================================================
t_list = [1, 3, 1, 3, 2, 1, 2]
#t_list = [2, 1, 2, 1]
count_and_print_teams(t_list)
0
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
26.11.2021, 06:09
Или как вариант:


Python
1
2
3
4
5
6
7
_ = input()
arr = input().split()
tmp = {}
for i, j in enumerate(arr):
    tmp[j] = tmp.get(j, []) + [i + 1]
res = list(map(lambda x, y, z: f'{x} {y} {z}', *tmp.values())) if len(tmp) == 3 else []
print(len(res), *res, sep='\n')
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
26.11.2021, 06:14
Python
1
2
3
4
5
6
7
8
9
10
11
n = int(input())
*a, = map(int, input().split())
b = [[] for _ in range(3)]
for i, x in enumerate(a, 1):
    b[x - 1].append(i)
res = zip(*b)
if res:
    for x in res:
        print(*x)
else:
    print(0)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.11.2021, 06:14
Помогаю со студенческими работами здесь

Олимпиада
В городе Найт-Сити творится много страшных событий. Прямо сейчас Ви рискует жизнью, чтобы обезвредить бомбу в самом центре региона...

Олимпиада
В недавно прошедшей Всеберляндской олимпиаде по информатике поучаствовали n человек. Каждый участник набрал некоторое количество баллов. ...

Олимпиада
В олимпиаде принимают участие А девятиклассников, В десятиклассников и С одиннадцатиклассников. Какое максимальное количество участников...

Олимпиада
Учителя 3 класса решили провести олимпиаду по математике. Результаты собраны в словарь results, где ключами являются имена детей, а...

Олимпиада задача
Напишите функцию joys of flying(), которая будет подводить промежуточные итоги - где интересней - снизу или сверху. А делать надо вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru