hdu 1031

来源:互联网 发布:朝鲜和韩国知乎 编辑:程序博客网 时间:2024/06/14 16:03

题目大意:在T-shirt设计图标,n个人为m种标志打分,输出前k个得分最高的标志编号。

对于第一个输出样例,得分最高的标志分别为6,3,1,5.在按编号大小降序排列。

对于第二个输出样例,3个标志得分一样,编号小的排前面,则为1,2,3.输出前2个按降序则是2,1.

#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct{double sum;int num;}node;node f[10000];int cmp1(const void*a,const void*b){return (*(node*)a).sum-(*(node*)b).sum>0?-1:1;}int cmp2(const void*a,const void*b){return (*(node*)a).num-(*(node*)b).num>0?-1:1;}int main(){int n,m,k;int i,j;double temp;while(scanf("%d %d %d",&n,&m,&k)!=EOF){memset(f,0,sizeof(f));for(i=0;i<n;i++){for(j=0;j<m;j++){scanf("%lf",&temp);f[j].sum+=temp;f[j].num=j+1;}}qsort(f,m,sizeof(f[0]),cmp1);qsort(f,k,sizeof(f[0]),cmp2);if(k==1)printf("%d\n",f[0].num);else{printf("%d",f[0].num);for(i=1;i<k;i++){printf(" %d",f[i].num);}printf("\n");}}return 0;}


0 0