两遍排序
叫我水题小王子
1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 int n,m,k; 5 int ans[10000]; 6 struct P{ 7 double v; 8 int pos; 9 }s[10000]; 10 double tmp; 11 bool cmp1(P a,P b){ 12 return a.v>b.v; 13 } 14 bool cmp2(P a,P b){ 15 return a.pos>b.pos; 16 } 17 int main() 18 { 19 while(~scanf("%d%d%d",&n,&m,&k)) 20 { 21 for(int i=1;i<=m;i++) s[i].pos=i,s[i].v=0; 22 for(int i=1;i<=n;i++) 23 { 24 for(int j=1;j<=m;j++) 25 { 26 scanf("%lf",&tmp); 27 s[j].v+=tmp; 28 } 29 } 30 sort(s+1,s+m+1,cmp1); 31 sort(s+1,s+k+1,cmp2); 32 for(int i=1;i<k;i++) printf("%d ",s[i].pos); 33 printf("%d ",s[k].pos); 34 } 35 }