程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 1873 看病要排隊 優先隊列

HDU 1873 看病要排隊 優先隊列

編輯:C++入門知識

這是一個優先隊列的簡單應用!


[cpp] 
#include<iostream>  
#include<string>  
#include<cstring>  
#include<algorithm>  
#include<cstdio>  
#include<cmath>  
#include<cctype>  
#include<iomanip>  
#include<queue>  
 
using namespace std; 
const int inf=10000000; 
 
struct node { 
    int num; 
    int k; 
    bool operator < (const node& x) const { 
        if(k!=x.k)return k<x.k; 
        else return num>x.num; 
    } 
}rt,R; 
 
int main() { 
    int n; 
    while(cin>>n) { 
        priority_queue<node>M[4]; 
        for(int i=1,t=1; i<=n; ++i) { 
            string cmd; cin>>cmd; 
            if(cmd=="IN") { 
                int a,b; cin>>a>>b; 
                rt.num=t++, rt.k=b; 
                M[a].push(rt); 
            } 
            if(cmd=="OUT") { 
                int a; cin>>a; 
                if(M[a].empty())puts("EMPTY"); 
                else { 
                    R=M[a].top();M[a].pop(); 
                    cout<<R.num<<endl; 
                } 
            } 
        } 
    } 
    return 0; 

#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cctype>
#include<iomanip>
#include<queue>

using namespace std;
const int inf=10000000;

struct node {
    int num;
    int k;
    bool operator < (const node& x) const {
        if(k!=x.k)return k<x.k;
        else return num>x.num;
    }
}rt,R;

int main() {
    int n;
    while(cin>>n) {
        priority_queue<node>M[4];
        for(int i=1,t=1; i<=n; ++i) {
            string cmd; cin>>cmd;
            if(cmd=="IN") {
                int a,b; cin>>a>>b;
                rt.num=t++, rt.k=b;
                M[a].push(rt);
            }
            if(cmd=="OUT") {
                int a; cin>>a;
                if(M[a].empty())puts("EMPTY");
                else {
                    R=M[a].top();M[a].pop();
                    cout<<R.num<<endl;
                }
            }
        }
    }
    return 0;
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved