会员积分排序

来源:互联网 发布:paparecipe 正品软件 编辑:程序博客网 时间:2024/05/17 04:58
题目1346:会员积分排序

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:717

解决:295

题目描述:

元旦佳节快到了,超市A想要给会员一些奖品。但是奖品有限,所以它需要给这些会员做一个排序,然后将名单输出来。排序的规则是,先按积分排序,如果会员的积分相同则按他的ID排序,因为ID号小则表示他注册的时间早。
现在某超市有每个会员的ID(ID保证不重复)、积分,它想要请你帮忙给排个序。

输入:

输入有多组数据。
每组第一行输入n(1<=n<=1000),m(1<=m<=50),n表示会员个数,m表示奖品个数;之后N行分别是两个整数id和s,id为这个会员的ID,s代表了这个会员的积分。

输出:

对每组输入输出min(m,n)个获奖的会员ID(按积分降序输出,如果积分相同按ID升序输出),每个会员ID一行。

样例输入:
5 31 52 103 34 205 2
样例输出:
421
#include<iostream>#include<algorithm>#include<vector>using namespace std; typedef struct{    int id;    int grade;}N;bool cmp(N a,N b){    if(a.grade!=b.grade)return a.grade>b.grade;    else return a.id<b.id;}int min(int a,int b){    if(a<=b)return a;    else return b;}int main(){    N t;    int n,m,i;    vector<N> v;    while(cin>>n>>m && n)    {        m=min(n,m);        while(n--)        {            cin>>t.id>>t.grade;            v.push_back(t);        }        sort(v.begin(),v.end(),cmp);        for(i=0;i<m; ++i)           cout<<v[i].id<<endl;        v.clear();    }    return 0;}/**************************************************************    Problem: 1346    User: 3011216016    Language: C++    Result: Accepted    Time:290 ms    Memory:1520 kb****************************************************************/


原创粉丝点击