这题不难,用好排序函数就ok。
有个细节就是我在cmp1函数里讨论a.sum和b.sum相等的情况是根据index的大小进行排序的。
其实事实上,不用这个处理也行,因为如果存在sum值相同,index不同的情况,默认排序就是index更小的在前面。。。
#include<iostream>
#include<algorithm>
using namespace std;
typedef struct py
{
double sum,index;
}py;
bool cmp1(const py &a,const py &b)
{
if(a.sum==b.sum)
{
return a.index<b.index;
}
else
return a.sum>b.sum;
}
bool cmp2(const py &a,const py &b)
{
return a.index>b.index;
}
py p[2000];
int main()
{
double a;
int n,m,k,i,j;
while(cin>>n>>m>>k)
{
for(i=0;i<2000;i++)
{
p[i].sum=0;
p[i].index=i;
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
cin>>a;
p[j].sum+=a;
}
sort(p+1,p+1+m,cmp1);
sort(p+1,p+1+k,cmp2);
for(i=1;i<k;i++)
{
cout<<p[i].index<<" ";
}
cout<<p[i].index<<endl;
}
return 0;
}