#include <iostream>
#include <vector>
#include <string>
#include <algorithm> //random_shuffle, sort, lower_bound
#include <ctime> //time
#include <cstdlib> //srand
struct SinhVien {
std:: string ten;
int diem;
SinhVien( const std:: string & t= "" , int d= 0 ) : ten( t) , diem( d) { }
static bool cmpByScore( const SinhVien& lhs, const SinhVien& rhs)
{ return lhs.diem < rhs.diem ; } ;
} ;
int main( )
{
srand ( time ( 0 ) ) ;
std:: vector < SinhVien> lopHoc;
// nhập sv
std:: string ten;
int diem;
while ( std:: cin >> ten >> diem) lopHoc.emplace_back ( ten, diem) ;
// xáo trộn ngẫu nhiên lopHoc
std:: random_shuffle ( lopHoc.begin ( ) , lopHoc.end ( ) ) ;
// xuất danh sách nhóm, mỗi nhóm tối đa 6 sv
const int MAX_STUD_PER_GROUP = 6 ;
int groupId = 1 , groupCount = 0 ;
for ( const auto & sv : lopHoc)
{
if ( ! groupCount) std:: cout << "\n Nhóm " << groupId << ": " << sv.ten ;
else std:: cout << ", " << sv.ten ;
if ( ++ groupCount == MAX_STUD_PER_GROUP) ++ groupId, groupCount = 0 ;
}
std:: cout << "\n " ;
// sắp xếp lopHoc theo điểm
std:: sort ( lopHoc.begin ( ) , lopHoc.end ( ) , SinhVien:: cmpByScore ) ;
// xuất danh sách lớp học
std:: cout << "\n Danh sách lớp học (điểm từ thấp đến cao)\n " ;
for ( const auto & sv : lopHoc)
std:: cout << sv.ten << ": " << sv.diem << "\n " ;
// chèn thêm 1 sv tên Mai có điểm 7
SinhVien newSv( "Mai" , 7 ) ;
lopHoc.insert ( std:: lower_bound ( lopHoc.begin ( ) , lopHoc.end ( ) , newSv,
SinhVien:: cmpByScore ) ,
newSv) ;
// xuất lại danh sách sv
std:: cout << "\n Danh sách lớp học sau khi chèn\n " ;
for ( const auto & sv : lopHoc)
std:: cout << sv.ten << ": " << sv.diem << "\n " ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPiAvL3JhbmRvbV9zaHVmZmxlLCBzb3J0LCBsb3dlcl9ib3VuZAojaW5jbHVkZSA8Y3RpbWU+IC8vdGltZQojaW5jbHVkZSA8Y3N0ZGxpYj4gLy9zcmFuZAoKc3RydWN0IFNpbmhWaWVuIHsKCXN0ZDo6c3RyaW5nIHRlbjsKCWludCBkaWVtOwoJU2luaFZpZW4oY29uc3Qgc3RkOjpzdHJpbmcmIHQ9IiIsIGludCBkPTApIDogdGVuKHQpLCBkaWVtKGQpIHt9CglzdGF0aWMgYm9vbCBjbXBCeVNjb3JlKGNvbnN0IFNpbmhWaWVuJiBsaHMsIGNvbnN0IFNpbmhWaWVuJiByaHMpCgl7IHJldHVybiBsaHMuZGllbSA8IHJocy5kaWVtOyB9Owp9OwoKaW50IG1haW4oKQp7CglzcmFuZCh0aW1lKDApKTsKCXN0ZDo6dmVjdG9yPFNpbmhWaWVuPiBsb3BIb2M7CgkKCS8vIG5o4bqtcCBzdgoJc3RkOjpzdHJpbmcgdGVuOwoJaW50IGRpZW07Cgl3aGlsZSAoc3RkOjpjaW4gPj4gdGVuID4+IGRpZW0pIGxvcEhvYy5lbXBsYWNlX2JhY2sodGVuLCBkaWVtKTsKCQoJLy8geMOhbyB0cuG7mW4gbmfhuqt1IG5oacOqbiBsb3BIb2MKCXN0ZDo6cmFuZG9tX3NodWZmbGUobG9wSG9jLmJlZ2luKCksIGxvcEhvYy5lbmQoKSk7CgkvLyB4deG6pXQgZGFuaCBzw6FjaCBuaMOzbSwgbeG7l2kgbmjDs20gdOG7kWkgxJFhIDYgc3YKCWNvbnN0IGludCBNQVhfU1RVRF9QRVJfR1JPVVAgPSA2OwoJaW50IGdyb3VwSWQgPSAxLCBncm91cENvdW50ID0gMDsKCWZvciAoY29uc3QgYXV0byYgc3YgOiBsb3BIb2MpCgl7CgkJaWYgKCFncm91cENvdW50KSBzdGQ6OmNvdXQgPDwgIlxuTmjDs20gIiA8PCBncm91cElkIDw8ICI6ICIgPDwgc3YudGVuOwoJCWVsc2UgCSAgICAgICAgIHN0ZDo6Y291dCA8PCAiLCAiIDw8IHN2LnRlbjsKCQlpZiAoKytncm91cENvdW50ID09IE1BWF9TVFVEX1BFUl9HUk9VUCkgKytncm91cElkLCBncm91cENvdW50ID0gMDsKCX0KCXN0ZDo6Y291dCA8PCAiXG4iOwoJCgkvLyBz4bqvcCB44bq/cCBsb3BIb2MgdGhlbyDEkWnhu4NtCglzdGQ6OnNvcnQobG9wSG9jLmJlZ2luKCksIGxvcEhvYy5lbmQoKSwgU2luaFZpZW46OmNtcEJ5U2NvcmUpOwoJLy8geHXhuqV0IGRhbmggc8OhY2ggbOG7m3AgaOG7jWMKCXN0ZDo6Y291dCA8PCAiXG5EYW5oIHPDoWNoIGzhu5twIGjhu41jICjEkWnhu4NtIHThu6sgdGjhuqVwIMSR4bq/biBjYW8pXG4iOwoJZm9yIChjb25zdCBhdXRvJiBzdiA6IGxvcEhvYykKCQlzdGQ6OmNvdXQgPDwgc3YudGVuIDw8ICI6ICIgPDwgc3YuZGllbSA8PCAiXG4iOwoJLy8gY2jDqG4gdGjDqm0gMSBzdiB0w6puIE1haSBjw7MgxJFp4buDbSA3CglTaW5oVmllbiBuZXdTdigiTWFpIiwgNyk7Cglsb3BIb2MuaW5zZXJ0KHN0ZDo6bG93ZXJfYm91bmQobG9wSG9jLmJlZ2luKCksIGxvcEhvYy5lbmQoKSwgbmV3U3YsCgkJCQkJICAJCQkgICBTaW5oVmllbjo6Y21wQnlTY29yZSksCgkJCQkgIG5ld1N2KTsKCS8vIHh14bqldCBs4bqhaSBkYW5oIHPDoWNoIHN2CglzdGQ6OmNvdXQgPDwgIlxuRGFuaCBzw6FjaCBs4bubcCBo4buNYyBzYXUga2hpIGNow6huXG4iOwoJZm9yIChjb25zdCBhdXRvJiBzdiA6IGxvcEhvYykKCQlzdGQ6OmNvdXQgPDwgc3YudGVuIDw8ICI6ICIgPDwgc3YuZGllbSA8PCAiXG4iOwp9
stdin
QW5oIDcKQiZpZ3JhdmU7bmggNwpDJmFhY3V0ZTt0IDUKRMWpbmcgNgpZ4bq/biA5CkgmdWdyYXZlO25nIDEwClRp4bq/biA4CkjhuqNpIDcKUGjGsOG7o25nIDUKQ2hpIDQKTmdoxKlhIDkKQuG6o28gOApQaOG7pW5nIDYKQW4gMgpTxKkgNApWeSA0ClBoJmFhY3V0ZTt0IDYKUXVhbmcgOQpDaGnhur9uIDUKQ2gmYWNpcmM7dSA3ClNhbmcgNQpMaSZlY2lyYztuIDMKS2ltIDEKUGjGsOG7m2MgNwo=
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