Advertisement
Guest User

Untitled

a guest
Feb 18th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.77 KB | None | 0 0
  1. #include <cmath>
  2. #include <cstdio>
  3. #include <vector>
  4. #include <iostream>
  5. #include <algorithm>
  6. using namespace std;
  7.  
  8. class Student
  9. {
  10. public:
  11. string f;
  12. string l;
  13. int y;
  14. Student()
  15. {
  16.  
  17. }
  18. void print()
  19. {
  20. cout << f << " " << l << " " << y << endl;
  21. }
  22. friend bool operator< (const Student &a, const Student &b)//make my life easy overload-sempai
  23. {
  24. if(a.y != b.y)
  25. {
  26. return (a.y < b.y);
  27. }
  28. else if(a.f != b.f)
  29. {
  30. return (a.f < b.f);
  31. }
  32. else
  33. {
  34. return (a.l < b.l);
  35. }
  36. }
  37. friend bool operator== (const Student &a, const Student &b)//make my life easy overload-sempai
  38. {
  39. return(a.y == b.y && a.f == b.f && a.l == b.l);
  40. }
  41. friend bool operator<= (const Student &a, const Student &b)//make my life easy overload-sempai
  42. {
  43. if(a == b)
  44. {
  45. return true;
  46. }
  47. else if(a.y != b.y)
  48. {
  49. return (a.y < b.y);
  50. }
  51. else if(a.f != b.f)
  52. {
  53. return (a.f < b.f);
  54. }
  55. else
  56. {
  57. return (a.l < b.l);
  58. }
  59. }
  60. };
  61. vector<Student> temp;
  62. void proster(vector<Student> s)
  63. {
  64. for(int i = 0; i < s.size(); i++)
  65. {
  66. s.at(i).print();
  67. }
  68. cout << endl;
  69. }
  70. void merge(vector<Student> &s, int l, int r)
  71. {
  72. int m = (l+r)/2;
  73. int size = r-l+1;
  74. int li = l;
  75. int ri = m+1;
  76. int i = l;
  77. while(li <= m && ri <= r)
  78. {
  79. if(s.at(li) <= s.at(ri))
  80. {
  81. temp.at(i) = s.at(li);
  82. li++;
  83. }
  84. else
  85. {
  86. temp.at(i) = s.at(ri);
  87. ri++;
  88. }
  89. i++;
  90. }
  91. copy(s.begin()+li, s.begin() + m-li+1, temp.begin()+i);
  92. copy(s.begin()+m, s.begin() + r-ri+1, temp.begin()+i);
  93. copy(temp.begin(), temp.end(), s.begin()+l);
  94. proster(s);
  95. }
  96. void mergesorthelper(vector<Student> &s, int l, int r){
  97. if(l < r)
  98. {
  99. int m = (l+r/2);
  100. mergesorthelper(s, l, m);
  101. mergesorthelper(s, m+1, r);
  102. merge(s, l, r);
  103. }
  104. else
  105. {
  106. return;
  107. }
  108. }
  109. void mergesort(vector<Student> &s)
  110. {
  111. mergesorthelper(s, 0, s.size());
  112. }
  113. int main() {
  114. int num;
  115. int j;
  116. vector<Student> roster;
  117. Student t;
  118. cin >> num;
  119. for(int i = 0; i < num; i++)
  120. {
  121. cin >> t.f >> t.l >> t.y;
  122. roster.push_back(t);
  123. }
  124. temp = roster;
  125. mergesort(roster);
  126. proster(roster);
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement