输出样例和题目给的一模一样,但是得的全是答案错误?
#include <bits/stdc++.h>
using namespace std;
struct People{
int num;
int money;
int hongbao_num;//抢红包的数量
int danci_num;//对同一个人抢红包的次数
};
bool cmp(const People&p1,const People&p2){
if(p1.money!=p2.money) return p1.money>p2.money;
else if(p1.hongbao_num!=p2.hongbao_num)return p1.hongbao_num>p2.hongbao_num;
else return p1.num<p2.num;
}
int main(){
int n;
cin>>n;//n个人
vector<People> p;
p.resize(n);
for(auto &p1:p){//用深拷贝才可以修改值
p1.num=0;//初始化每位成员属性值
p1.money=0;
p1.hongbao_num=0;
}
for(int i=0;i<n;i++){
int m;//m个红包
cin>>m;
for(int k=0;k<n;k++){//同一个人(每一行)发出的红包,每人最多只能抢1次,不能重复抢。
p[k].danci_num=0;
}
for(int j=0;j<m;j++){
int bianhao,qian;
cin>>bianhao>>qian;
bianhao--;
if(p[bianhao].danci_num>0)continue;//单次抢红包数量不超过1
p[bianhao].money+=qian;//收红包的加钱
p[i].money-=qian;//发红包的减钱
p[bianhao].hongbao_num++;//抢红包的数量要加加
p[i].num = i+1;//记录亏钱的人的编号
p[bianhao].num = bianhao + 1;//记录的钱的人的编号
p[bianhao].danci_num++;//单次抢红包数量
}
}
sort(p.begin(),p.end(),cmp);
for(auto &p1:p){
cout<<p1.num<<' '<<p1.money*1.00/100.00<<endl;
}
return 0;
}