1. 程式人生 > >自定義結構體排序

自定義結構體排序

#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; }