#include <iostream>
#include <list>
#include <string>
#include <algorithm>
using namespace std;
struct Student {
string surname;
int course;
int mathan;
int algebra;
};
bool compareBySurname(const Student& a, const Student& b) {
return a.surname < b.surname;
}
bool compareByCourse(const Student& a, const Student& b) {
return a.course < b.course;
}
bool hasLowGrades(const Student& s) {
return s.mathan < 60 || s.algebra < 60;
}
void printList(const list<Student>& lst) {
for (const Student& s : lst) {
cout << s.surname << " курс " << s.course
<< " mathan - " << s.mathan
<< " algebra - " << s.algebra << endl;
}
cout << endl;
}
int main() {
list<Student> students = {
{"Іваненко", 1, 75, 82},
{"Петренко", 2, 91, 88},
{"Сидоренко", 1, 58, 64},
{"Бондар", 2, 67, 59},
{"Коваль", 1, 45, 51},
{"Ткаченко", 2, 88, 79},
{"Литвин", 1, 62, 65}
};
cout << "Початковий список студентів\n";
printList(students);
students.sort(compareBySurname);
cout << "Відсортовано за прізвищем\n";
printList(students);
students.sort(compareByCourse);
cout << "Відсортовано за курсом \n";
printList(students);
for (Student& s : students) {
if (s.mathan > 60 && s.algebra > 60) {
s.course++;
}
}
cout << "Після переведення на наступний курс \n";
printList(students);
students.remove_if(hasLowGrades);
cout << "Після видалення студентів \n";
printList(students);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgU3R1ZGVudCB7CiAgICBzdHJpbmcgc3VybmFtZTsKICAgIGludCBjb3Vyc2U7CiAgICBpbnQgbWF0aGFuOwogICAgaW50IGFsZ2VicmE7Cn07Cgpib29sIGNvbXBhcmVCeVN1cm5hbWUoY29uc3QgU3R1ZGVudCYgYSwgY29uc3QgU3R1ZGVudCYgYikgewogICAgcmV0dXJuIGEuc3VybmFtZSA8IGIuc3VybmFtZTsKfQoKYm9vbCBjb21wYXJlQnlDb3Vyc2UoY29uc3QgU3R1ZGVudCYgYSwgY29uc3QgU3R1ZGVudCYgYikgewogICAgcmV0dXJuIGEuY291cnNlIDwgYi5jb3Vyc2U7Cn0KCmJvb2wgaGFzTG93R3JhZGVzKGNvbnN0IFN0dWRlbnQmIHMpIHsKICAgIHJldHVybiBzLm1hdGhhbiA8IDYwIHx8IHMuYWxnZWJyYSA8IDYwOwp9CgoKdm9pZCBwcmludExpc3QoY29uc3QgbGlzdDxTdHVkZW50PiYgbHN0KSB7CiAgICBmb3IgKGNvbnN0IFN0dWRlbnQmIHMgOiBsc3QpIHsKICAgICAgICBjb3V0IDw8IHMuc3VybmFtZSA8PCAiICDQutGD0YDRgSAiIDw8IHMuY291cnNlCiAgICAgICAgICAgICA8PCAiICBtYXRoYW4gLSAiIDw8IHMubWF0aGFuCiAgICAgICAgICAgICA8PCAiICBhbGdlYnJhIC0gIiA8PCBzLmFsZ2VicmEgPDwgZW5kbDsKICAgIH0KICAgIGNvdXQgPDwgZW5kbDsKfQoKCmludCBtYWluKCkgewogICAgbGlzdDxTdHVkZW50PiBzdHVkZW50cyA9IHsKICAgICAgICB7ItCG0LLQsNC90LXQvdC60L4iLCAxLCA3NSwgODJ9LAogICAgICAgIHsi0J/QtdGC0YDQtdC90LrQviIsIDIsIDkxLCA4OH0sCiAgICAgICAgeyLQodC40LTQvtGA0LXQvdC60L4iLCAxLCA1OCwgNjR9LAogICAgICAgIHsi0JHQvtC90LTQsNGAIiwgMiwgNjcsIDU5fSwKICAgICAgICB7ItCa0L7QstCw0LvRjCIsIDEsIDQ1LCA1MX0sCiAgICAgICAgeyLQotC60LDRh9C10L3QutC+IiwgMiwgODgsIDc5fSwKICAgICAgICB7ItCb0LjRgtCy0LjQvSIsIDEsIDYyLCA2NX0KICAgIH07CgogICAgY291dCA8PCAi0J/QvtGH0LDRgtC60L7QstC40Lkg0YHQv9C40YHQvtC6INGB0YLRg9C00LXQvdGC0ZbQslxuIjsKICAgIHByaW50TGlzdChzdHVkZW50cyk7CgogICAgc3R1ZGVudHMuc29ydChjb21wYXJlQnlTdXJuYW1lKTsKICAgIGNvdXQgPDwgItCS0ZbQtNGB0L7RgNGC0L7QstCw0L3QviDQt9CwINC/0YDRltC30LLQuNGJ0LXQvFxuIjsKICAgIHByaW50TGlzdChzdHVkZW50cyk7CgogICAgCiAgICBzdHVkZW50cy5zb3J0KGNvbXBhcmVCeUNvdXJzZSk7CiAgICBjb3V0IDw8ICLQktGW0LTRgdC+0YDRgtC+0LLQsNC90L4g0LfQsCDQutGD0YDRgdC+0LwgXG4iOwogICAgcHJpbnRMaXN0KHN0dWRlbnRzKTsKICAgIAogICAgZm9yIChTdHVkZW50JiBzIDogc3R1ZGVudHMpIHsKICAgIGlmIChzLm1hdGhhbiA+IDYwICYmIHMuYWxnZWJyYSA+IDYwKSB7CiAgICAgICAgcy5jb3Vyc2UrKzsKICAgIH0KfQoKICAgIGNvdXQgPDwgItCf0ZbRgdC70Y8g0L/QtdGA0LXQstC10LTQtdC90L3RjyDQvdCwINC90LDRgdGC0YPQv9C90LjQuSDQutGD0YDRgSBcbiI7CiAgICBwcmludExpc3Qoc3R1ZGVudHMpOwoKICAgCiAgICBzdHVkZW50cy5yZW1vdmVfaWYoaGFzTG93R3JhZGVzKTsKICAgIGNvdXQgPDwgItCf0ZbRgdC70Y8g0LLQuNC00LDQu9C10L3QvdGPINGB0YLRg9C00LXQvdGC0ZbQsiBcbiI7CiAgICBwcmludExpc3Qoc3R1ZGVudHMpOwoKICAgIHJldHVybiAwOwp9Cg==