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

HDU 2275 multiset

編輯:C++入門知識

題意:n個操作

Push 入容器

Pop彈出一個 滿足<=該數的最大的數(若沒有輸出No Element!)

開始用set打了一遍wrong了,這裡入容器的數是有重復的,所以用multiset

 

 

#include<stdio.h>
#include<set>
using namespace std;
multiset<int>ss;
multiset<int>::iterator p,q;
int main(){
    int n,t; char c[5];
    while(~scanf("%d",&n)){
        ss.clear();
        while(n--){
            scanf("%s %d",c,&t);
            if(c[1]=='u')ss.insert(t);
            else {
				if(ss.size()==0 || *ss.begin() > t){printf("No Element!\n");continue;}
				ss.insert(t);
				q=ss.find(t);//返回第一個等於t的迭代器
				p=q;	p++;
				if(p!=ss.end() && *p==t)t=*p;
				else {p--;p--;t=*p;}
				printf("%d\n",t);
				ss.erase(p); ss.erase(q);
            }
        }
        printf("\n");
    }
    return 0;
}
/*
7
Push 2
Push 5
Pop 2
Pop 3
Pop 4
Pop 5
Pop 6

*/

 

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