zoukankan      html  css  js  c++  java
  • Priority Queue

    A priority queue is a data structure which maintains a set SS of elements, each of with an associated value (key), and supports the following operations:

    • insert(S,k)insert(S,k): insert an element kk into the set SS
    • extractMax(S)extractMax(S): remove and return the element of SS with the largest key

    Write a program which performs the insert(S,k)insert(S,k) and extractMax(S)extractMax(S) operations to a priority queue SS. The priority queue manages a set of integers, which are also keys for the priority.

    Input

    Multiple operations to the priority queue SS are given. Each operation is given by "insert kk", "extract" or "end" in a line. Here, kk represents an integer element to be inserted to the priority queue.

    The input ends with "end" operation.

    Output

    For each "extract" operation, print the element extracted from the priority queue SS in a line.

    Constraints

    • The number of operations 2,000,000≤2,000,000
    • 0k2,000,000,0000≤k≤2,000,000,000

    Sample Input 1

    insert 8
    insert 2
    extract
    insert 10
    extract
    insert 11
    extract
    extract
    end
    

    Sample Output 1

    8
    10
    11
    2

    #include <iostream>
    #include <queue>
    #include <string>
    using namespace std;
    
    int main()
    {
    	priority_queue<int> PQ;
    	string com;
    	int n;
    	
    	while(cin >> com)
    	{
    		if(com == "end")
    		{
    			break;
    		}
    		if(com[0] == 'i')
    		{
    			cin >> n;
    			PQ.push(n);
    		}
    		else if(com[0] == 'e')
    		{
    			cout << PQ.top() << endl;
    			PQ.pop();
    		}
    	}
    	
    	return 0;
    } 
    

      

  • 相关阅读:
    u3d Mecanim动画
    四元数的共轭和逆
    c++ 单例模式
    GVIM、VIM
    Linux磁盘管理——虚拟文件系统
    Linux磁盘管理——MBR 与 GPT
    Link monitoring
    Linux高级网络设置——将多个网卡设置成一个网卡
    Linux高级网络设置——给网卡绑定多个IP
    DNS原理极限剖析
  • 原文地址:https://www.cnblogs.com/mjn1/p/10750783.html
Copyright © 2011-2022 走看看