分析
这是一道统计+排序的题目,没什么难度,调用sort即可
获得红包的同时,发出去的那个人要减去相应的红包,这一点要注意!
ac代码
#include<bits/stdc++.h>
using namespace std;
struct people{
int id;
int money;
int num;
}p[10001];
int comp(struct people p1,struct people p2){
if(p1.money>p2.money){
return 1;
}else if(p1.money==p2.money){
if(p1.num>p2.num){
return 1;
}else if(p1.num==p2.num){
if(p1.id<p2.id){
return 1;
}else{
return 0;
}
}else{
return 0;
}
}else{
return 0;
}
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
p[i].id=i;
p[i].money=0;
p[i].num=0;
}
for(int i=1;i<=n;i++){
int k;
cin>>k;
for(int j=0;j<k;j++){
int a,b;
cin>>a>>b;
p[a].num++;
p[a].money+=b;
p[i].money-=b;
}
}
sort(p+1,p+n+1,comp);
for(int i=1;i<=n;i++){
printf("%d %.2f\n",p[i].id,p[i].money*1.0/100);
}
}