Design T-Shirt

#include <stdio.h>
#include <algorithm>
using namespace std;
struct Node
{
 int i;
 double sum;
}T[10000];
int n,m,k;
bool cmp1(Node  a,Node b)
{
 if(a.sum== b.sum)
  return a.i < b.i;  //值按降序,如果相等,标号按升序 
 return a.sum > b.sum;
}
bool cmp2(Node a,Node b)
{
 return a.i > b.i;  //标号按升序 
}
int main()
{
 while(scanf("%d %d %d",&n,&m,&k)!=EOF)
 {
  int i,j;
  double t;
  for(i=0;i<m;i++)
  {
   T[i].sum=0;
  }
  for(i=0;i<n;i++)
  {
   for(j=0;j<m;j++)
   {
    scanf("%lf",&t);
    T[j].sum+= t;
    T[j].i=j+1;
   }
  }

  sort(T,T+m,cmp1);
  //for(i=0;i<m;i++)
 // printf("%.2lf %d\n",T[i].sum, T[i].i);
  sort(T,T+k,cmp2);
  for(i=0;i<k;i++)
  printf(i?" %d":"%d",T[i].i);
  puts("");
  }
 return 0;
}
这道题有点纠结啊。。首先是全英文。其二是两次排序。

posted on 2011-05-04 00:30  more think, more gains  阅读(148)  评论(0编辑  收藏  举报

导航