HDU 1031 Design T-Shirt

http://acm.hdu.edu.cn/showproblem.php?pid=1031

题意 :n个人,每个人对m件衣服打分,每个人对第 i 件衣服的打分要加起来,选取和前 k 高的输出他们的编号 i ,然后这k个的序号要倒序输出

思路 :快排一下就行了。这道题坑了我好几遍TLE,原因是我交的语言是G++而不是C++。。。。。。

#include <iostream>

#include <algorithm>

#include <stdio.h>

using namespace std ;

struct node

{

    double sati ;

    int order ;

} a[11100] ;

bool cmp(const node &x,const node &y)

{

    return x.sati == y.sati ? (x.order < y.order) : (y.sati < x.sati );

}

bool cmp1(const node &x,const node &y)

{

    return x.order > y.order ;

}

int main()

{

    int n,m,k ;

    double b ;

    while(scanf("%d %d %d",&n,&m,&k)!=EOF)

    {

        for(int i = 0 ; i < m ; i++)

        a[i].sati = 0 ;

        for(int i = 0 ; i < n ; i++)

        {

            for(int j = 0 ; j < m ; j++)

            {

                cin>>b ;

                a[j].sati += b ;

                a[j].order = j+1 ;

            }

        }

   sort(a,a+m,cmp) ;

   sort(a,a+k,cmp1) ;

   for(int i = 0 ; i < k-1 ; i++ )

         cout<<a[i].order<<" " ;

         cout<<a[k-1].order<<endl ;

    }

    return 0 ;

}
View Code

 

你可能感兴趣的:(design)