http://acm.hdu.edu.cn/showproblem.php?pid=1031
题目描述:先按满意度排序,选出前K个,再按序号排序。
3 6 4 2 2.5 5 1 3 4 5 1 3.5 2 2 2 1 1 1 1 1 10 3 3 2 1 2 3 2 3 1 3 1 2
6 5 3 1 2 1
#include <stdio.h>
struct s
{
int x;
double y;
}a[300],b;
int main()
{
int n,m,k;
while(scanf("%d%d%d",&n,&m,&k)!=EOF)
{
double t;
int i,j,z;
for(i=0;i<m;i++)
a[i].y=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%lf",&t);
a[j].x=j+1;
a[j].y=a[j].y+t;
}
}
for(i=0;i<m-1;i++) //认可度排序
for(j=0;j<m-i-1;j++)
if(a[j].y<a[j+1].y)
{
b=a[j];
a[j]=a[j+1];
a[j+1]=b;
}
for(i=0;i<k-1;i++) //编号排序
for(j=0;j<k-i-1;j++)
if(a[j].x<a[j+1].x)
{
b=a[j];
a[j]=a[j+1];
a[j+1]=b;
}
for(i=0;i<k-1;i++)
printf("%d ",a[i].x);
printf("%d\n",a[i].x);
}
}