自定義結構體排序
阿新 • • 發佈:2019-02-11
#include <cstdio>
#include <iostream>
#include <iterator>
#include <cstring>
#include <map>
#include <algorithm>
using namespace std;
typedef struct df{
int number;
int l;
int s;
};
bool great(const df a,const df b){//多種排序規則
if(a.l==b.l){
if (a.s==b.s){
return a.number<b.number;
}else{
return a.s>b.s;
}
}else{
return a.l>b.l;
}
}
int main(){
int n;
int num[10010]={0};
df w[10010];
scanf("%d",&n);
for(int i=0;i<n;i++){
int k,l,g,sum=0;
scanf ("%d",&k);
for(int j=0;j<k;j++){
scanf("%d",&l);
scanf("%d",&g);
num[l-1]=num[l-1]+g;
w[l-1].s=w[l-1].s+1;
sum=sum+g;
}
num[i]=num[i]-sum;
}
for(int i=0;i<n;i++){
w[i].number=i+1 ;
w[i].l=num[i];
}
sort(w,w+n,great);
for(int i=0;i<n;i++){
printf("%d ",w[i].number);
printf("%.2lf\n",w[i].l/100.0);
}
return 0;
}