?>
Выведите фамилии и имена учащихся в порядке убывания их среднего . Входные данные Заданы сначала количество учащихся n, затем n строк, каждая из которых содержит фамилию, имя и три числа (оценки по трем предметам: математике, физике, информатике Данные в строке разделены одним пробелом. Оценки принимают значение от 1 до 5. Выходные данные Необходимо вывести пары фамилия-имя по одной на строке, разделяя фамилию и имя одним пробелом. Выводить оценки не нужно. Если несколько учащихся имеют одинаковые средние , то их нужно выводить в порядке, заданном во входных данных. Sample Input: 3 Markov Valeriy 5 5 5 Sergey Petrov 1 1 1 Petrov Petr 3 3 3 Sample Output: Markov Valeriy Petrov Petr Sergey Petrov вот мой код: #include #include #include #include using namespace std; struct man { string name; string surname; double point; }; bool s (man a, man b) { return a.point >= b.point; } int main() { int n; cin >> n; vector a(n); for (int i = 0; i < n; i++) { string temp_name, temp_surname; int pointTemp1, pointTemp2, pointTemp3; double temp_point; cin >> temp_name >> temp_surname >> pointTemp1 >> pointTemp2 >> pointTemp3; temp_point = pointTemp1 + pointTemp2 + pointTemp3; man struct_temp; struct_temp.name = temp_name; struct_temp.surname = temp_surname; struct_temp.point = temp_point; a[i] = struct_temp; } stable_sort(a.begin(), a.end(), s); for (auto now : a) { cout << now.name << ' ' << now.surname << endl; } return 0; } Надо как-то добавить , когда четыре отличника
Ответы
#include <iostream>
#include <vector>
#include <map>
#include <cmath>
#include <queue>
#include <set>
#include <iomanip>
#include <map>
using namespace std;
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,m;
cin >> n >> m;
int max_val = -1,pointer = -1;
for(int i = 0; i < n; i++)
{
int sum = 0,k;
for(int j = 0; j < m; j++)
{
cin >> k;
sum += k;
}
if(sum > max_val)
{
max_val = sum;
pointer = i;
}
}
cout << max_val << "\n" << pointer;
}