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

队列(优先队列 结构体)

时间:2017-12-17 00:12:46      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:include   ios   put   nbsp   整数   出队   custom   main   cout   

TonyY 有幸进入银行实习, 作为一名柜台职员, 他的任务就是在正确的时间
为正确的人服务。
每个来银行的人, 都有一个 vip 值, TonyY 需要做到每服务完一个客户后,
找出队列中 vip 值最高的人为他服务,之后被服务的人离开队列。在他为客户服
务的过程中,随时都会有新的客户来排队。现在他想知道,每次叫号的时候,叫
到的人会是谁。
★数据输入
输入第一行为一个正整数 N(0<N<=100000),表示操作数。
接下来 N 行, 每行一个操作。
“PUT name num”表示有一个新客户进入队列, vip 值为 num
(0<length(name)<=20, 0<num<=10^9, name 中只会有大小写字母)。
“GET” 表示 TonyY 要叫号了。
输入数据保证所有人的 vip 值两两不一致。
★数据输出
每次叫号时, 输出被叫到号的人的名字, 如果当时没人排队,输出一行
“Sleep!”。

#include <stdio.h>  
#include <iostream>  
#include <algorithm> 
#include <vector>  
#include <queue> 
#include <string>  
using namespace std;
struct custom
{
    string name;
    int vip;
    bool operator < (const custom &c) const
    {
        return vip<c.vip;
    }
}ct;

priority_queue<custom>    q;
int main()
{
    string op,name;
    int n,i,j,vip;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        cin>>op;
        if(op=="PUT")
        {
            cin>>ct.name>>ct.vip;
            q.push(ct);
        }
        else if(op=="GET")
        {
            if(q.size()!=0)
            {
                ct = q.top();
                cout<<ct.name<<endl;
                q.pop();
            }
            else
                cout<<"Sleep!"<<endl;
        }
    }
    return 0;
}
        

 

队列(优先队列 结构体)

标签:include   ios   put   nbsp   整数   出队   custom   main   cout   

原文地址:http://www.cnblogs.com/fzuhyj/p/8047923.html

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