输入样例:
10 3 2 22 10 58 8 125 5 1 345 3 211 5 233 7 13 8 101 1 7 8800 2 1 1000 2 1000 2 4 250 10 320 6 5 11 9 22 8 33 7 44 10 55 4 2 1 3 8800 2 1 23 2 123 1 8 250 4 2 121 4 516 7 112 9 10
输出样例:
1 11.63 2 3.63 8 3.63 3 2.11 7 1.69 6 -1.67 9 -2.18 10 -3.26 5 -3.26 4 -12.32
源代码:
#include#include #include using namespace std; struct peo { int number; //编号 int money_1=0;//收入金额 int sum=0; //抢到的红包个数 }a[10010]; bool cmp(peo a,peo b) //定义cmp函数 { if(a.money_1!=b.money_1) //如果收入不一样的话按照收入排列 return a.money_1>b.money_1; //按照收入从大到小排列 else //如果收入相同的话 { if(a.sum!=b.sum) //并且受红包数不一样 return a.sum>b.sum; //按照受红包数从多到少排列 else //收入相同,收红包数相同的话按照编号从小到大排列 return a.number >n; for(int i=1;i<=n;i++) { a[i].number=i; //定义编号 int k; cin>>k; for(int j=1;j<=k;j++) { int number_1; double money_2; cin>>number_1>>money_2; a[number_1].money_1+=money_2; //某编号收入增加 a[number_1].sum++; //某编号受红包数增加 a[i].money_1-=money_2; //发红包的人收入减少 } } sort(a+1, a+1+n, cmp);//sort函数排序 for(int i=1;i<=n;i++) { cout<



