简单模拟即可
#include<bits/stdc++.h>
using namespace std;
const int N = 1e4+3;
typedef struct Peo{
double sum = 0;
int num = 0;
int id;
}PP;
PP P[N];
// bool cmp(PP u,PP v){
// if(u.sum>v.sum) return u.sum>v.sum;
// else if(abs(u.sum-v.sum)<1e-6) return u.num>v.num;
// else{
// return u.sum<v.sum;
// }
// }
//注意其cmp排序逻辑不是上面那种!!!
bool cmp(PP u, PP v){
if(abs(u.sum-v.sum)>=1e-6) return u.sum > v.sum;
else if(u.num != v.num) return u.num > v.num;
else return u.id < v.id;
}
int main()
{
int n;
cin>>n;
for(int i = 1;i<=n;i++){
int s;
cin>>s;
for(int j = 0;j<s;j++){
//double money = 0;
int x;
double y;
cin>>x>>y;
P[x].sum += y;
P[i].sum -= y;
P[x].num++;
//money += y;
}
}
for(int i = 1;i<=n;i++){
P[i].id = i;
}
sort(P+1,P+n+1,cmp);
for(int i = 1;i<=n-1;i++){
printf("%d %.2f\n",P[i].id,P[i].sum/100);
}
printf("%d %.2f",P[n].id,P[n].sum/100);
return 0;
}