Решение задачи Командная олимпиада с Codeforces

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


В школе №0 столицы Берляндии учатся n школьников. Все ребята в этой школе способные: у кого-то склонность к программированию, у кого-то склонность к математике, а у остальных — к физкультуре. Таким образом, для каждого школьника известна величина ti:

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

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

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

Код

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n, temp;
    cin >> n;
    vector<int> a1;
    vector<int> a2;
    vector<int> a3;
    for(int i = 0; i < n; ++i){
        cin >> temp;
        if(temp == 1)
            a1.push_back(i + 1);
        else if(temp == 2)
            a2.push_back(i + 1);
        else
            a3.push_back(i + 1);
    }
    int res = min(a1.size(), min(a2.size(), a3.size()));
    cout << res << endl;
    for(int i = 0; i < res; ++i){
        cout << a1[i] << " " << a2[i] << " " << a3[i] << endl;
    }
    return 0;
}

         

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



Комментарии

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