#include <iostream>
using namespace std;
#include <list>
struct Student
{
string lastname;
int course;
int mathAn;
int mathAl;
};
void printlist(list<Student> &lst){
for(list<Student>::iterator it = lst.begin(); it != lst.end(); it++)
cout<< (*it).lastname<<" "<< (*it).course<<" "<<(*it).mathAn<<" "<<(*it).mathAl<<" ";
cout<<endl;
}
bool compareLastname(const Student& a, const Student& b){
return a.lastname < b.lastname;
}
bool compareCourse(const Student& a, const Student& b){
return a.course < b.course;
}
bool lowMark(const Student& s){
return (s.mathAn < 60 || s.mathAl < 60);
}
int main() {
list<Student> lst;
lst.push_back({"Ivanov", 1, 75, 80});
lst.push_back({"Frolov", 2, 55, 70});
lst.push_back({"Cheprazov", 1, 90, 95});
lst.push_back({"Pinti", 2, 61, 62});
lst.push_back({"Georgiev", 1, 45, 88});
lst.push_back({"Bondar", 2, 78, 85});
cout << "Початковий список:" << endl;
printlist(lst);
lst.sort(compareLastname);
cout << "sort lastname" << endl;
printlist(lst);
lst.sort(compareCourse);
cout << "sort coyrse" << endl;
printlist(lst);
for(list<Student>::iterator it = lst.begin(); it != lst.end(); it++){
if(it->mathAn > 60 && it->mathAl > 60){
it->course++;
}
}
cout << "next course" << endl;
printlist(lst);
lst.remove_if(lowMark);
cout << "<60:" << endl;
printlist(lst);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojaW5jbHVkZSA8bGlzdD4Kc3RydWN0IFN0dWRlbnQKewoJc3RyaW5nIGxhc3RuYW1lOwoJaW50IGNvdXJzZTsKCWludCBtYXRoQW47CglpbnQgbWF0aEFsOwp9Owp2b2lkIHByaW50bGlzdChsaXN0PFN0dWRlbnQ+ICZsc3QpewoJZm9yKGxpc3Q8U3R1ZGVudD46Oml0ZXJhdG9yIGl0ID0gbHN0LmJlZ2luKCk7IGl0ICE9IGxzdC5lbmQoKTsgaXQrKykKCSBjb3V0PDwgKCppdCkubGFzdG5hbWU8PCIgIjw8ICgqaXQpLmNvdXJzZTw8IiAiPDwoKml0KS5tYXRoQW48PCIgIjw8KCppdCkubWF0aEFsPDwiICI7Cgljb3V0PDxlbmRsOwp9CmJvb2wgY29tcGFyZUxhc3RuYW1lKGNvbnN0IFN0dWRlbnQmIGEsIGNvbnN0IFN0dWRlbnQmIGIpewogICAgcmV0dXJuIGEubGFzdG5hbWUgPCBiLmxhc3RuYW1lOwp9CmJvb2wgY29tcGFyZUNvdXJzZShjb25zdCBTdHVkZW50JiBhLCBjb25zdCBTdHVkZW50JiBiKXsKICAgIHJldHVybiBhLmNvdXJzZSA8IGIuY291cnNlOwp9CmJvb2wgbG93TWFyayhjb25zdCBTdHVkZW50JiBzKXsKICAgIHJldHVybiAocy5tYXRoQW4gPCA2MCB8fCBzLm1hdGhBbCA8IDYwKTsKfQppbnQgbWFpbigpIHsKCSBsaXN0PFN0dWRlbnQ+IGxzdDsKICAgIGxzdC5wdXNoX2JhY2soeyJJdmFub3YiLCAxLCA3NSwgODB9KTsKICAgIGxzdC5wdXNoX2JhY2soeyJGcm9sb3YiLCAyLCA1NSwgNzB9KTsKICAgIGxzdC5wdXNoX2JhY2soeyJDaGVwcmF6b3YiLCAxLCA5MCwgOTV9KTsKICAgIGxzdC5wdXNoX2JhY2soeyJQaW50aSIsIDIsIDYxLCA2Mn0pOwogICAgbHN0LnB1c2hfYmFjayh7Ikdlb3JnaWV2IiwgMSwgNDUsIDg4fSk7CiAgICBsc3QucHVzaF9iYWNrKHsiQm9uZGFyIiwgMiwgNzgsIDg1fSk7CiAgICBjb3V0IDw8ICLQn9C+0YfQsNGC0LrQvtCy0LjQuSDRgdC/0LjRgdC+0Lo6IiA8PCBlbmRsOwogICAgcHJpbnRsaXN0KGxzdCk7CiAgICBsc3Quc29ydChjb21wYXJlTGFzdG5hbWUpOwogICAgY291dCA8PCAic29ydCBsYXN0bmFtZSIgPDwgZW5kbDsKICAgIHByaW50bGlzdChsc3QpOwogICAgbHN0LnNvcnQoY29tcGFyZUNvdXJzZSk7CiAgICBjb3V0IDw8ICJzb3J0IGNveXJzZSIgPDwgZW5kbDsKICAgIHByaW50bGlzdChsc3QpOwogICAgZm9yKGxpc3Q8U3R1ZGVudD46Oml0ZXJhdG9yIGl0ID0gbHN0LmJlZ2luKCk7IGl0ICE9IGxzdC5lbmQoKTsgaXQrKyl7CiAgICAgICAgaWYoaXQtPm1hdGhBbiA+IDYwICYmIGl0LT5tYXRoQWwgPiA2MCl7CiAgICAgICAgICAgIGl0LT5jb3Vyc2UrKzsKICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8ICJuZXh0IGNvdXJzZSIgPDwgZW5kbDsKICAgIHByaW50bGlzdChsc3QpOwogICAgbHN0LnJlbW92ZV9pZihsb3dNYXJrKTsKCiAgICBjb3V0IDw8ICI8NjA6IiA8PCBlbmRsOwogICAgcHJpbnRsaXN0KGxzdCk7CglyZXR1cm4gMDsKfQ==