#include <string>
#include <algorithm>
#include <iostream>
#include <iomanip>
struct Student
{
std::string name; //name of student
double average; //average grades for student
int max; //holds max grade for student
int min; //holds min grade for student
Student() : max(0), min(0), average(0) {}
};
const int MAX_STUDENTS = 25;
const int MAX_GRADES = 3;
Student studentNum[MAX_STUDENTS];
int grades[MAX_STUDENTS][MAX_GRADES];
using namespace std;
void displayMax(Student* students, int grades[][MAX_GRADES], int studentCount)
{
//get max grade for each student
for (int i = 0; i < studentCount; i++)
students[i].max = *std::max_element(&grades[i][0], &grades[i][MAX_GRADES]);
// sort students based on max
std::sort(students, students + studentCount, [](const Student& s1, const Student& s2)
{ return s1.max > s2.max;});
// output results
cout << "\n";
for (int i = 0; i < studentCount; ++i)
cout << students[i].name << " " << students[i].max << "\n";
}
int main()
{
studentNum[0].name = "Joe";
grades[0][0] = 50;
grades[0][1] = 100;
grades[0][2] = 86;
studentNum[1].name = "Jack";
grades[1][0] = 70;
grades[1][1] = 80;
grades[1][2] = 95;
studentNum[2].name = "Jill";
grades[2][0] = 75;
grades[2][1] = 95;
grades[2][2] = 50;
displayMax(studentNum, grades, 3);
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCnN0cnVjdCBTdHVkZW50CnsKICAgIHN0ZDo6c3RyaW5nIG5hbWU7ICAgICAgICAvL25hbWUgb2Ygc3R1ZGVudAogICAgZG91YmxlIGF2ZXJhZ2U7ICAgICAvL2F2ZXJhZ2UgZ3JhZGVzIGZvciBzdHVkZW50CiAgICBpbnQgbWF4OyAgICAgICAgICAgIC8vaG9sZHMgbWF4IGdyYWRlIGZvciBzdHVkZW50CiAgICBpbnQgbWluOyAgICAgICAgICAgIC8vaG9sZHMgbWluIGdyYWRlIGZvciBzdHVkZW50CiAgICBTdHVkZW50KCkgOiBtYXgoMCksIG1pbigwKSwgYXZlcmFnZSgwKSB7fQp9OwoKY29uc3QgaW50IE1BWF9TVFVERU5UUyA9IDI1OyAgCmNvbnN0IGludCBNQVhfR1JBREVTID0gMzsgICAgIAoKU3R1ZGVudCBzdHVkZW50TnVtW01BWF9TVFVERU5UU107IAppbnQgZ3JhZGVzW01BWF9TVFVERU5UU11bTUFYX0dSQURFU107Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBkaXNwbGF5TWF4KFN0dWRlbnQqIHN0dWRlbnRzLCBpbnQgZ3JhZGVzW11bTUFYX0dSQURFU10sIGludCBzdHVkZW50Q291bnQpCnsKICAgIC8vZ2V0IG1heCBncmFkZSBmb3IgZWFjaCBzdHVkZW50CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0dWRlbnRDb3VudDsgaSsrKQogICAgICAgIHN0dWRlbnRzW2ldLm1heCA9ICpzdGQ6Om1heF9lbGVtZW50KCZncmFkZXNbaV1bMF0sICZncmFkZXNbaV1bTUFYX0dSQURFU10pOyAKCiAgICAvLyBzb3J0IHN0dWRlbnRzIGJhc2VkIG9uIG1heAogICAgc3RkOjpzb3J0KHN0dWRlbnRzLCBzdHVkZW50cyArIHN0dWRlbnRDb3VudCwgW10oY29uc3QgU3R1ZGVudCYgczEsIGNvbnN0IFN0dWRlbnQmIHMyKQogICAgeyByZXR1cm4gczEubWF4ID4gczIubWF4O30pOwoKICAgIC8vIG91dHB1dCByZXN1bHRzCiAgICBjb3V0IDw8ICJcbiI7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0dWRlbnRDb3VudDsgKytpKQogICAgICAgIGNvdXQgPDwgc3R1ZGVudHNbaV0ubmFtZSA8PCAiICAiIDw8IHN0dWRlbnRzW2ldLm1heCA8PCAiXG4iOwp9CgppbnQgbWFpbigpCnsKICAgIHN0dWRlbnROdW1bMF0ubmFtZSA9ICJKb2UiOwogICAgZ3JhZGVzWzBdWzBdID0gNTA7CiAgICBncmFkZXNbMF1bMV0gPSAxMDA7CiAgICBncmFkZXNbMF1bMl0gPSA4NjsKICAgIAogICAgc3R1ZGVudE51bVsxXS5uYW1lID0gIkphY2siOwogICAgZ3JhZGVzWzFdWzBdID0gNzA7CiAgICBncmFkZXNbMV1bMV0gPSA4MDsKICAgIGdyYWRlc1sxXVsyXSA9IDk1OwoKICAgIHN0dWRlbnROdW1bMl0ubmFtZSA9ICJKaWxsIjsKICAgIGdyYWRlc1syXVswXSA9IDc1OwogICAgZ3JhZGVzWzJdWzFdID0gOTU7CiAgICBncmFkZXNbMl1bMl0gPSA1MDsKCiAgICBkaXNwbGF5TWF4KHN0dWRlbnROdW0sIGdyYWRlcywgMyk7Cn0K