#include<iostream>
#include<algorithm>
#include<string>
#include<map>
using namespace std;
const int maxn = 110;
const int maxk = 310;
int n, k;
struct point {
string rn;
int score;
int local_number;
int local_rank;
int final_rank;
void read()
{
cin >> rn >> score;
local_rank = 1;
final_rank = 1;
}
bool operator < (const point &x)const
{
return score == x.score ? rn<x.rn : score>x.score;
}
}stu[maxn*maxk];
int main()
{
int cnt = 0;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> k;
for(int j=0;j<k;j++)
{
stu[cnt].read();
stu[cnt].local_number = i;
cnt++;
}
int a = cnt - k;
sort(stu+a, stu + cnt);
int rank = 1;
for (int m = cnt-k+1; m < cnt; m++)
{
rank++;
if (stu[m].score < stu[m - 1].score) stu[m].local_rank = rank;
else stu[m].local_rank = stu[m - 1].local_rank;
}
}
sort(stu, stu + cnt);
int rank = 1;
for (int i = 1; i < cnt; i++)
{
rank++;
if (stu[i].score < stu[i - 1].score)stu[i].final_rank = rank;
else stu[i].final_rank = stu[i - 1].final_rank;
}
cout << cnt << endl;
for (int i = 0; i < cnt; i++)
cout << stu[i].rn << " " << stu[i].final_rank << " " << stu[i].local_number << " " << stu[i].local_rank << endl;
return 0;
}
终于有一个会的题目了,,
简洁!简洁最重要!