团体程序设计天梯赛L2-009 抢红包 (25 分)(C++)
题目描述如下
代码如下
#include<iostream>
#include<algorithm>
#include<iomanip>
using namespace std;
struct redp{
int gs;//收到的红包个数
int num;//编号,方便排序
float money;
};
int cmp(redp c,redp d)
{
if(c.money>d.money)
return 1;
if(c.money==d.money&&c.gs>d.gs)
return 1;
if(c.money==d.money&&c.gs==d.gs&&c.num<d.num)
return 1;
return 0;
}
int main()
{
int n,n1,a,m1,sum;//n1每个人发出的红包数 sum每个人发出的钱
cin>>n;
redp r[n+1]={0};
int i,j;
for(i=1;i<=n;i++)
{
cin>>n1;
r[i].num=i;
sum=0;
for(j=0;j<n1;j++)
{
cin>>a;
cin>>m1;
r[a].gs++;
r[a].money=r[a].money+m1;
sum=sum+m1;
}
r[i].money=r[i].money-sum;
}
sort(r+1,r+n+1,cmp);
for(i=1;i<=n;i++)
{
cout<<r[i].num<<" "<<fixed<<setprecision(2)<<r[i].money/100<<endl;
}
return 0;
}