码迷,mamicode.com
首页 > 其他好文 > 详细

HRBUST 1313 火影忍者之~静音

时间:2017-03-08 13:52:38      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:ios   scanf   names   amp   优先队列   algo   turn   str   end   

优先队列。

每次将$n$个人压入优先队列,取出$5$个,最后排序。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<algorithm>
#include<iostream>
using namespace std;

int m,n;
struct X
{
    string name;
    int A,B;

    X(string Name,int AA,int BB)
    {
        name = Name;
        A=AA;
        B=BB;
    }

    bool operator < (const X &a) const {
        if(A!=a.A) return A<a.A;
        return name>a.name;
    }
};

struct Y
{
    string name;
    int A,B;
}t[10010];

bool cmp2(Y a,Y b)
{
    if(a.B!=b.B) return a.B>b.B;
    return a.name<b.name;
}

int main()
{
    while(~scanf("%d%d",&m,&n))
    {
        priority_queue<X>Q;
        int sz=0;
        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
            {
                string str; int AA,BB;
                cin>>str;
                scanf("%d",&AA);
                scanf("%d",&BB);
                Q.push(X(str,AA,BB));
            }

            for(int j=0;j<5;j++)
            {
                X TOP = Q.top(); Q.pop();
                t[sz].name = TOP.name;
                t[sz].A = TOP.A;
                t[sz].B = TOP.B;

                sz++;
            }
        }

        sort(t,t+5*m,cmp2);
        for(int i=0;i<5;i++) cout<<t[i].name<<endl;

    }
    return 0;
}

 

HRBUST 1313 火影忍者之~静音

标签:ios   scanf   names   amp   优先队列   algo   turn   str   end   

原文地址:http://www.cnblogs.com/zufezzt/p/6518720.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!