Title Link: http://ac.jobdu.com/problem.php?pid=1007
Detailed Links: https://github.com/zpfbuaa/JobduInCPlusPlus
Reference code:
////1007 Olympic sequencing issues. CPP//Jobdu////Created by Pengfei_zheng on 28/04/2017.//copyright©2017 Pengfei_zheng. All rights reserved.//#include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>#include<cmath>//#include <cstring>#defineMax_size 1010#defineRANK 1using namespacestd;structcountry{intID; intGoldmedal; intTotalmedal; intHuman; DoubleGoldratio; DoubleTotalratio; intRankgold; intRanktotal; intRankgoldratio; intRanktotalratio;}; Country Country[max_size]; Country Cal[max_size]; intN, M;intCmprankgold (Const voidBConst void*b) { return(* (country*) b). Goldmedal-(* (country*) a). Goldmedal;} intCmpranktotal (Const voidBConst void*b) { return(* (country*) b). Totalmedal-(* (country*) a). Totalmedal;} intCmprankgoldratio (Const voidBConst void*b) { return(* (country*) b). Goldratio-(* (country*) a). Goldratio;} intCmpranktotalratio (Const voidBConst void*b) { return(* (country*) b). Totalratio-(* (country*) a). Totalratio;} intCmpid (Const voidBConst void*b) { return(* (country*) a). ID-(* (country*b). Id;} intMain () {//freopen ("/users/pengfei_zheng/desktop/input.txt", "R", stdin); while(SCANF ("%d%d", &n,&m)! =EOF) { for(inti =0; I < n; i++) {scanf ("%d%d%d",&country[i].goldmedal,&country[i].totalmedal,&Country[i].human); } for(inti =0; I < m; i++){ intTmpid; scanf ("%d",&tmpid); Cal[i]=Country[tmpid]; Cal[i].goldratio= (Double) cal[i].goldmedal/(Double) Cal[i].human; Cal[i].totalratio= (Double) cal[i].totalmedal/(Double) Cal[i].human; Cal[i].id=i; Cal[i].rankgold=cal[i].ranktotal=cal[i].rankgoldratio=cal[i].ranktotalratio=max_size; } qsort (Cal,m,sizeof(country), cmprankgold); intRank =1; cal[0].rankgold =1; for(inti =1; I < m; i++){ if(cal[i].goldmedal!=cal[i-1].goldmedal) {rank= i +1; } cal[i].rankgold=rank; } qsort (Cal,m,sizeof(country), cmpranktotal); Rank=1; cal[0].ranktotal =1; for(inti =1; I < m; i++){ if(cal[i].totalmedal!=cal[i-1].totalmedal) {rank= i +1; } cal[i].ranktotal=rank; } qsort (Cal,m,sizeof(country), cmprankgoldratio); Rank=1; cal[0].rankgoldratio =1; for(inti =1; I < m; i++){ if(cal[i].goldratio!=cal[i-1].goldratio) {rank= i +1; } cal[i].rankgoldratio=rank; } qsort (Cal,m,sizeof(country), cmpranktotalratio); Rank=1; cal[0].ranktotalratio =1; for(inti =1; I < m; i++){ if(cal[i].totalratio!=cal[i-1].totalratio) {rank= i +1; } cal[i].ranktotalratio=rank; } qsort (Cal,m,sizeof(country), cmpid); for(inti =0; I < m; i++){//cout<<cal[i].rankgold<< "" <<cal[i].rankTotal<< "" <<cal[i].rankgoldratio<& lt; " "<<cal[i].rankTotalRatio<<endl; intMinrank =Cal[i].rankgold; intRankchoose =RANK; if(Cal[i].ranktotal <Minrank) {Minrank=Cal[i].ranktotal; Rankchoose= RANK +1; } if(Cal[i].rankgoldratio <Minrank) {Minrank=Cal[i].rankgoldratio; Rankchoose= RANK +2; } if(Cal[i].ranktotalratio <Minrank) {Minrank=Cal[i].ranktotalratio; Rankchoose= RANK +3; } printf ("%d:%d\n", Minrank,rankchoose); } printf ("\ n"); } return 0;}/************************************************************** problem:1007 User:zpfbuaa language:c++ Re sult:accepted time:0 Ms memory:1612 kb****************************************************************/
Topic 1007: Olympic sequencing issues (custom sorting issues)