题目链接:https://pintia.cn/problem-sets/1101307589335527424/problems/1101314114867245056
题意:给n个国家,以及每个国家的金牌数、奖牌数、人口数(百万)。以及m个来询问的国家,现在有4中排名方式(金牌数,奖牌数、人均金牌数、人均奖牌数),对来询问的每个国家给出对其最有利的排名方式以及排名。
思路:用4次sort就行,打表存进b数组,对每次询问输出相应的结果即可,注意一个坑点,比如两个国家金牌数相等,则在金牌数排行榜中这两个国家排名相同,在这wa
了一发。详见代码:(代码看着很长,其实都是重复的部分,可以写进一个循环的,懒得改了)
1 #include2 using namespace std; 3 4 struct node{ 5 int gd,md,ps,id; 6 double p3,p4; 7 }a[230]; 8 9 bool cmp1(node x,node y){10 return x.gd>y.gd;11 }12 13 bool cmp2(node x,node y){14 return x.md>y.md;15 }16 17 bool cmp3(node x,node y){18 return x.p3>y.p3;19 }20 21 bool cmp4(node x,node y){22 return x.p4>y.p4;23 }24 25 int n,m,b[230][5];26 27 int main(){28 scanf("%d%d",&n,&m);29 for(int i=0;i b[tmp][i])73 t2=b[tmp][i],t1=i;74 printf("%d:%d",t2,t1);75 if(m) printf(" ");76 }77 printf("\n");78 return 0;79 }