Top.Mail.Ru
Ответы

Помогите с программированием

Задание 1
По закону Неверландии кандидаты в парламент сообщают только своё имя и возраст. В избирательном бюллетене предпочтение отдаётся возрасту: старшие кандидаты идут первыми. Кандидаты одного возраста сортируются в бюллетене по алфавиту, но опять же в обратном порядке.
В стандартном вводе будет информация о кандидатах в нужном объёме — их имена и возрасты. Ваша задача напечатать в cout избирательный бюллетень, который содержит только имена кандидатов в нужном порядке.
Формат входных данных
Вначале в cin передаётся количество кандидатов. Затем для каждого кандидата — его имя и возраст. Порядок, в котором будут прочитаны кандидаты, может быть любым. Ваша задача — вывести их в правильном порядке.
Формат выходных данных
Выводите только имена кандидатов. Каждое — на отдельной строке.
Пример
Входные данные:
4
John 30
Elvis 45
Holly 45
Ronny 25
Правильный ответ:
Holly
Elvis
John
Ronny
В этом примере Holly и Elvis имеют одинаковый возраст, поэтому их имена выводятся в порядке, обратном алфавитному.
Как будет тестироваться ваш код
Тренажёр подаст на вход программы различные наборы пар "имя-возраст" и сравнит вывод программы с ожидаемым.

мой код:
#include <iostream>
#include <string>
#include <vector>

#include <algorithm>
using namespace std;

int main() {
int count;
cin >> count;
vector<pair<string, int>> candidaits;
for (int i = 0; i < count; ++i) {
string name;
int age;
cin >> name >> age;
candidaits.push_back(make_pair(name, age));

// сохраните в вектор пар
}
reverse(candidaits.begin(), candidaits.end());
for (const auto& element: candidaits) {
cout << element.first<< endl;
}

// Выведите только имена в порядке убывания возраста
// Имена людей одинакового возраста нужно вывести в порядке, обратном алфавитному
}

компилятор:
Тест № 4 НЕ прошел проверку
причина: Неправильный ответ
подсказка: Программа неправильно выводит имена, когда ей на вход подаются случайные имена и возрасты

Тест № 5 НЕ прошел проверку
причина: Неправильный ответ
подсказка: Программа неправильно выводит имена, когда ей на вход подаются случайные имена и возрасты

Тест № 6 НЕ прошел проверку
причина: Неправильный ответ
подсказка: Программа неправильно выводит имена, когда ей на вход подаются случайные имена и возрасты

Тест № 7 НЕ прошел проверку
причина: Неправильный ответ
подсказка: Программа неправильно выводит имена, когда ей на вход подаются случайные имена и возрасты

Тест № 8 НЕ прошел проверку
причина: Неправильный ответ
подсказка: Программа неправильно выводит имена, когда ей на вход подаются случайные имена и возрасты

Тест № 9 НЕ прошел проверку
причина: Неправильный ответ
подсказка: Программа неправильно выводит имена, когда ей на вход подаются случайные имена и возрасты
Задача прошла 3 из 10 проверок
Не успех(


Тест № 10 НЕ прошел проверку
причина: Неправильный ответ
подсказка: Программа неправильно выводит имена, когда ей на вход подаются случайные имена и возрасты

По дате
По рейтингу
Аватар пользователя
Новичок
1234567891011
 // ввод
int count;
cin >> count;
vector<pair<int, string>> candidaits(count);
for (auto &v : candidaits) { cin >> v.second >> v.first; }

// сортировка
sort(candidaits.begin(), candidaits.end(), greater<>());

// вывод
for (auto v : candidaits) { cout << v.second << '\n'; } 
Аватар пользователя
Искусственный Интеллект
123456789101112131415161718192021222324252627282930313233343536
 #include <iostream> 
#include <string> 
#include <vector> 
#include <algorithm> 
 
using namespace std; 
 
int main() { 
    int count; 
    cin >> count; 
 
    vector<pair<string, int>> candidates; 
 
    for (int i = 0; i < count; ++i) { 
        string name; 
        int age; 
        cin >> name >> age; 
        candidates.emplace_back(name, age); 
    } 
 
    sort(candidates.begin(), candidates.end(), [](const pair<string, int>& a, const pair<string, int>& b) { 
        // Сортировка по убыванию возраста 
        if (a.second != b.second) { 
            return a.second > b.second; 
        } 
        // Если возрасты равны, сортируем по убыванию алфавита 
        return a.first > b.first; 
    }); 
 
    for (const auto& candidate : candidates) { 
        cout << candidate.first << endl; 
    } 
 
    return 0; 
}