#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct node{//用结构体后面更好排序
int num,bao;//num--编号 bao--红包个数
double money;
};
bool cmp(node a,node b){
if(a.money==b.money){
if(a.bao==b.bao){
return a.num<a.num;
}
return a.bao>b.bao;
}
return a.money>b.money;
}
int main(){
int n;cin>>n;
struct node a[100001];
for(int i=1;i<=n;i++){
a[i].money=0;
a[i].bao=0;
a[i].num=i;
}
for(int i=1;i<=n;i++){
int k;cin>>k;
int shao=0;//发红包减钱
int N,p;
for(int j=0;j<k;j++){
cin>>N;
cin>>p;
a[N].money+=p;
a[N].bao++;
shao+=p;
}a[i].money-=shao;
}sort(a+1,a+n+1,cmp);//因为是从1到n,所以要加1
for(int i=1;i<=n;i++){
cout<<a[i].num<<" ";
printf("%.2f\n",a[i].money/100);//此处的printf是方便输出小数点,也可用函数代替
}return 0;
}
L2-009 抢红包 天梯赛 c++ 个人见解
最新推荐文章于 2024-04-18 11:34:49 发布