Как перебирать кортежи в c++?
Можете объяснить как перебирать кортежи в языке c++? Мне необходимо создать кортеж из 6 элементов и, в зависимости от условия, добавлять или заменять элемент в кортеже. В конце вывести все элементы. Задание 1. Кортежи
Соревнования по игре «Тетрис-онлайн» проводятся по следующим правилам. Каждый участник регистрируется на сайте игры под определённым игровым именем. Имена участников не повторяются. Чемпионат проводится в течение определённого времени. В любой момент этого времени любой зарегистрированный участник может зайти на сайт чемпионата и начать зачётную игру. По окончании игры её результат (количество набранных очков) фиксируется и заносится в протокол. Участники имеют право играть несколько раз. Количество попыток одного участника не ограничивается. Окончательный результат участника определяется по одной игре, лучшей для данного участника. Более высокое место в соревнованиях занимает участник, показавший лучший результат. При равенстве результатов более высокое место занимает участник, раньше показавший лучший результат. В ходе соревнований заполняется протокол, каждая строка которого описывает одну игру и содержит результат участника и его игровое имя. Протокол формируется в реальном времени по ходу проведения чемпионата, поэтому строки в нём расположены в порядке проведения игр: чем раньше встречается строка в протоколе, тем раньше закончилась соответствующая этой строке игра. Напишите эффективную, в том числе по памяти, программу, которая по данным протокола определяет победителя и призёров. Гарантируется, что в чемпионате участвует не менее трёх игроков. Перед текстом программы кратко опишите алгоритм решения задачи и укажите используемый язык программирования и его версию.
Описание входных данных Первая строка содержит число N- общее количество строк протокола. Каждая из следующих N строк содержит записанные через пробел результат участника (целое неотрицательное число, не превышающее 100 миллионов) и игровое имя (имя не может содержать пробелов). Строки исходных данных соответствуют строкам протокола и расположены в том же порядке, что и в протоколе. Гарантируется, что количество участников соревнований не меньше 3.
Описание выходных данных Программа должна вывести имена и результаты трёх лучших игроков по форме, приведённой ниже в примере.
Пример входных данных: 9 69485 Jack 95715 qwerty 95715 Alex 83647 M 197128 qwerty 95715 Jack 93289 Alex 95715 Alex 95715 M
Пример выходных данных для приведённого выше примера входных данных: 1 место. qwerty (197128) 2 место. Alex (95715) 3 место. Jack (95715)
Со своими скудными знаниями, я смог додуматься только до этого.
#include <iostream>
#include <string>
#include <tuple>
using namespace std;
int main()
{
setlocale(LC_ALL, "RU");
int N, i, score;
string username;
tuple<int, string, int, string, int, string> t(0, "name", 0, "name", 0, "name");
cout << "Введите количество строк --> ";
cin >> N;
for (i = 0; i < N; i++)
{
cin >> score >> username;
if (score > get<0>(t))
{
if (get<1>(t) != username)
{
if ((get<0>(t) > get<2>(t)))
{
get<2>(t) = get<0>(t);
get<3>(t) = get<1>(t);
}
else if ((get<0>(t) > get<4>(t)) && (get<1>(t) != get<3>(t)))
{
get<4>(t) = get<0>(t);
get<5>(t) = get<1>(t);
}
}
get<0>(t) = score;
get<1>(t) = username;
}
else if (get<1>(t) != username)
{
if (score > get<2>(t))
{
if ((get<2>(t) > get<4>(t)) && (get<3>(t) != get<1>(t)))
{
get<4>(t) = get<2>(t);
get<5>(t) = get<3>(t);
}
get<2>(t) = score;
get<3>(t) = username;
}
else if ((score > get<4>(t)) && (username != get<3>(t)))
{
get<4>(t) = score;
get<5>(t) = username;
}
}
}
cout << "1 место. " << get<1>(t) << " (" << get<0>(t) << ")" << endl;
cout << "2 место. " << get<3>(t) << " (" << get<2>(t) << ")" << endl;
cout << "3 место. " << get<5>(t) << " (" << get<4>(t) << ")" << endl;
return 0;
}