(二叉堆10.2.1)ZOJ 2724 Windows Message Queue(对结构体使用优先队列)

2014-11-24 01:41:37 · 作者: · 浏览: 7
/* 
 * ZOJ_2724.cpp 
 * 
 *  Created on: 2013年11月7日 
 *      Author: Administrator 
 */  
  
#include   
#include   
#include   
#include   
  
using namespace std;  
  
struct MES {  
    char str[10];  
    int mes;  
    int p;  
    int id;  
  
    bool operator<( const MES& b)const {//特别要注意这种写法...  
        if (p != b.p) {  
            return p > b.p;  
        }  
  
        return id > b.id;  
    }  
};  
  
int main() {  
    char s[26];  
    priority_queue q;//对结构体使用优先队列  
    MES tmp;  
    while (scanf("%s", s) != EOF) {  
        int index = 0;  
        if (strcmp(s, "PUT") == 0) {  
            scanf("%s %d %d", tmp.str, &tmp.mes, &tmp.p);  
            tmp.id = index++;  
  
            q.push(tmp);  
  
        } else {  
            if (q.empty()) {  
                printf("EMPTY QUEUE!\n");  
            } else {  
                tmp = q.top();  
                q.pop();  
  
                printf("%s %d\n", tmp.str, tmp.mes);  
            }  
        }  
    }  
  
    return 0;  
}