c++代码
struct pp{
int c,d;
int a;
}q[10100];
double b[10100];
bool cmp(pp l,pp r){
if(l.a!=r.a){
return l.a>r.a;
}
else{
if(l.d!=r.d) return l.d>r.d;
else{
return l.c<r.c;
}
}
}
void solve()
{
for(int i=1;i<=10100;i++){
q[i].c=i;
}
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
int t;
scanf("%d",&t);
for(int j=1;j<=t;j++){
int x,y;
scanf("%d%d",&x,&y);
q[x].a+=y;
b[i]-=y;
q[x].d++;
}
}
for(int i=1;i<=n;i++){
q[i].a+=b[i];
}
sort(q+1,q+1+n,cmp);
for(int i=1;i<=n;i++){
printf("%d %.2lf\n",q[i].c,q[i].a/100.0);
}
}
int main()
{
/*int t;
cin >>t;
while(t--)*/ solve();
return 0;
}
- 注意:浮点型数比较时直接用==或!=很容易出现精度问题导致答案错误。