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 阅读(154) 评论(0) 收藏 举报