Advertisement
Dzham

pizda

Nov 19th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.11 KB | None | 0 0
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <vector>
  4. #include <map>
  5. #include <string>
  6.  
  7. using std::cout;
  8. using std::cin;
  9. using std::string;
  10.  
  11. struct student {
  12. string name;
  13. string surname;
  14. int day;
  15. int month;
  16. int year;
  17. int score;
  18. int number;
  19. std::vector<string> university;
  20. };
  21.  
  22. bool compare_entry(const student & student1, const student & student2) {
  23. if (student1.score != student2.score) {
  24. return student1.score > student2.score;
  25. } else if (student1.year != student2.year) {
  26. return (student1.year < student2.year);
  27. } else if (student1.month != student2.month) {
  28. return (student1.month < student2.month);
  29. } else if (student1.day != student2.day) {
  30. return (student1.day < student2.day);
  31. } else if (student1.surname != student2.surname) {
  32. return (student1.surname < student2.surname);
  33. }
  34. return (student1.name < student2.name);
  35. }
  36.  
  37. bool compare_entry2(const student & student1, const student & student2) {
  38. if (student1.surname != student2.surname) {
  39. return student1.surname < student2.surname;
  40. }
  41. return (student1.name < student2.name);
  42. }
  43.  
  44. int main() {
  45. int N, M, day, month, year, date, sco, number;
  46. string call, name1, name2, univ;
  47. std::vector<student> students, result, k;
  48. std::vector<string> universities;
  49. std::map<string, int> places;
  50. std::map<string, std::vector<student>> results;
  51. cin >> N;
  52. for (int i = 0; i < N; i++) {
  53. cin >> univ;
  54. cin >> number;
  55. places[univ] = number;
  56. universities.push_back(univ);
  57. }
  58. cin >> M;
  59. for (int i = 0; i < M; i++) {
  60. student stud;
  61. cin >> name1;
  62. cin >> name2;
  63. cin >> day;
  64. cin >> month;
  65. cin >> year;
  66. cin >> sco;
  67. cin >> number;
  68. stud.name = name1;
  69. stud.surname = name2;
  70. stud.day = day;
  71. stud.month = month;
  72. stud.year = year;
  73. stud.score = sco;
  74. stud.number = number;
  75. for (int j = 0; j < stud.number; j++) {
  76. cin >> univ;
  77. stud.university.push_back(univ);
  78. }
  79. students.push_back(stud);
  80. }
  81. std::sort(students.begin(), students.end(), compare_entry);
  82. for (int i = 0; i < N; i++) {
  83. std::vector<student> empty = {};
  84. results[universities[i]] = empty;
  85. }
  86. for (int i = 0; i < M; i++) {
  87. for (int j = 0; j < students[i].number; j++) {
  88. if (places.at(students[i].university[j]) > 0) {
  89. places.at(students[i].university[j]) -= 1;
  90. results[students[i].university[j]].push_back(students[i]);
  91. j = students[i].number;
  92. }
  93. }
  94. }
  95. for (const auto &myPair : results) {
  96. cout << myPair.first;
  97. std::vector<student> st;
  98. st = results[myPair.first];
  99. std::sort(st.begin(), st.end(), compare_entry2);
  100. int i = 0;
  101. for (i = 0; i < st.size(); i++) {
  102. cout << '\t' << st.at(i).name << ' ' << st.at(i).surname;
  103. }
  104. cout << '\n';
  105. }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement