fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <algorithm> //random_shuffle, sort, lower_bound
  5. #include <ctime> //time
  6. #include <cstdlib> //srand
  7.  
  8. struct SinhVien {
  9. std::string ten;
  10. int diem;
  11. SinhVien(const std::string& t="", int d=0) : ten(t), diem(d) {}
  12. static bool cmpByScore(const SinhVien& lhs, const SinhVien& rhs)
  13. { return lhs.diem < rhs.diem; };
  14. };
  15.  
  16. int main()
  17. {
  18. srand(time(0));
  19. std::vector<SinhVien> lopHoc;
  20.  
  21. // nhập sv
  22. std::string ten;
  23. int diem;
  24. while (std::cin >> ten >> diem) lopHoc.emplace_back(ten, diem);
  25.  
  26. // xáo trộn ngẫu nhiên lopHoc
  27. std::random_shuffle(lopHoc.begin(), lopHoc.end());
  28. // xuất danh sách nhóm, mỗi nhóm tối đa 6 sv
  29. const int MAX_STUD_PER_GROUP = 6;
  30. int groupId = 1, groupCount = 0;
  31. for (const auto& sv : lopHoc)
  32. {
  33. if (!groupCount) std::cout << "\nNhóm " << groupId << ": " << sv.ten;
  34. else std::cout << ", " << sv.ten;
  35. if (++groupCount == MAX_STUD_PER_GROUP) ++groupId, groupCount = 0;
  36. }
  37. std::cout << "\n";
  38.  
  39. // sắp xếp lopHoc theo điểm
  40. std::sort(lopHoc.begin(), lopHoc.end(), SinhVien::cmpByScore);
  41. // xuất danh sách lớp học
  42. std::cout << "\nDanh sách lớp học (điểm từ thấp đến cao)\n";
  43. for (const auto& sv : lopHoc)
  44. std::cout << sv.ten << ": " << sv.diem << "\n";
  45. // chèn thêm 1 sv tên Mai có điểm 7
  46. SinhVien newSv("Mai", 7);
  47. lopHoc.insert(std::lower_bound(lopHoc.begin(), lopHoc.end(), newSv,
  48. SinhVien::cmpByScore),
  49. newSv);
  50. // xuất lại danh sách sv
  51. std::cout << "\nDanh sách lớp học sau khi chèn\n";
  52. for (const auto& sv : lopHoc)
  53. std::cout << sv.ten << ": " << sv.diem << "\n";
  54. }
Success #stdin #stdout 0s 3424KB
stdin
Anh 7
Bình 7
Cát 5
Dũng 6
Yến 9
Hùng 10
Tiến 8
Hải 7
Phượng 5
Chi 4
Nghĩa 9
Bảo 8
Phụng 6
An 2
Sĩ 4
Vy 4
Phát 6
Quang 9
Chiến 5
Châu 7
Sang 5
Liên 3
Kim 1
Phước 7
stdout
Nhóm 1: An, Phát, Kim, Phụng, Dũng, Hùng
Nhóm 2: Phước, Cát, Bảo, Bình, Anh, Chiến
Nhóm 3: Tiến, Yến, Liên, Hải, Châu, Vy
Nhóm 4: Sĩ, Quang, Sang, Nghĩa, Chi, Phượng

Danh sách lớp học (điểm từ thấp đến cao)
Kim: 1
An: 2
Liên: 3
Chi: 4
Sĩ: 4
Vy: 4
Phượng: 5
Sang: 5
Cát: 5
Chiến: 5
Phát: 6
Dũng: 6
Phụng: 6
Anh: 7
Bình: 7
Hải: 7
Châu: 7
Phước: 7
Tiến: 8
Bảo: 8
Yến: 9
Quang: 9
Nghĩa: 9
Hùng: 10

Danh sách lớp học sau khi chèn
Kim: 1
An: 2
Liên: 3
Chi: 4
Sĩ: 4
Vy: 4
Phượng: 5
Sang: 5
Cát: 5
Chiến: 5
Phát: 6
Dũng: 6
Phụng: 6
Mai: 7
Anh: 7
Bình: 7
Hải: 7
Châu: 7
Phước: 7
Tiến: 8
Bảo: 8
Yến: 9
Quang: 9
Nghĩa: 9
Hùng: 10