思路:这题主要是数据处理好 排序 然后输出即可
当一个发出红包时 这个人的money-=红包的钱
收到红包的人sum++,money+=红包的钱
代码如下:
#include<iostream>
#include<cstring>
#include<sstream>
#include<cmath>
#include<algorithm>
using namespace std;
struct Man{
int num; //编号
int sum=0; //收到的红包数
double money=0;//收到的钱
}s[10002];
int comp(const Man &a,const Man &b){
if(a.money<b.money){
return 0;
}
else if(a.money==b.money && a.sum<b.sum){
return 0;
} else if(a.money==b.money && a.sum==b.sum && a.num>b.num){
return 0;
}
return 1;
}
int main()
{
int n,num,k;
double money;
cin>>n;
for(int i=1;i<=n;i++){
s[i].num = i;
cin>>k;
for(int j=0;j<k;j++){
cin>>num>>money;
s[num].sum++;
s[num].money+=money;
s[i].money-=money;
}
}
sort(s+1,s+n+1,comp);
for(int i=1;i<=n;i++){
printf("%d %.2lf\n",s[i].num,s[i].money/100);
}
return 0;
}