#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct Student
{
string registration_number;
int score;
int final_rank;
int location_number;
int local_rank;
friend istream & operator>>(istream &is, Student &stu)
{
is>>stu.registration_number>>stu.score;
return is;
}
friend ostream & operator<<(ostream &os, const Student &stu)
{
os<<stu.registration_number<<" "<<stu.final_rank<<" "<<stu.location_number<<" "<<stu.local_rank;
return os;
}
};
bool Desc(Student stu1, Student stu2)
{
if(stu1.score == stu2.score)
return stu1.registration_number<stu2.registration_number;
else
return stu1.score>stu2.score;
}
void MySort(vector<Student>& vec, bool type)
{
sort(vec.begin(), vec.end(), Desc);
int size = vec.size();
int tmp = -1;
int cc = 0;
for(int i=0; i<size; i++)
{
if(tmp!=vec[i].score)
{
cc = i+1;
tmp = vec[i].score;
}
if(type)
vec[i].local_rank = cc;
else
vec[i].final_rank = cc;
}
}
void input(vector<Student>& svec, const int& local_number)
{
int count = 0;
cin>>count;
Student stu;
for(int i=0; i<count; i++)
{
cin>>stu;
stu.location_number = local_number;
svec.push_back(stu);
}
MySort(svec, true);
}
int main()
{
int count = 0;
cin>>count;
vector<Student> result;
for(int i=0; i<count; i++)
{
vector<Student> svec;
input(svec, i+1);
result.reserve(result.size()+svec.size());
result.insert(result.end(), svec.begin(), svec.end());
}
MySort(result, false);
int size = result.size();
cout<<size<<endl;
for(int i=0; i<size; i++)
cout<<result[i]<<endl;
return 0;
}
1025
最新推荐文章于 2022-11-21 10:48:58 发布