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

pop sequence

时间:2016-03-03 22:49:24      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:

两个set维护在stack中和不在stack中的元素,priority_queue维护在stack中的最大元素

AC代码

#include <set>
#include <iostream>
#include <queue>
#include <cstdio>
#include <vector>
using namespace std;
int main(){
    int n,m,k;
    scanf("%d %d %d",&m,&n,&k);
    for(int i = 0;i < k;i++){
        set<int> inS;
        set<int> outS;
        priority_queue<int> s;
        bool flag(true);
        for(int j = 0;j < n;j++){
            int tmp;
            scanf("%d",&tmp);
            if(!s.empty() && s.top() > tmp){
                flag = false;
            }
            else if(!s.empty() && s.top() == tmp){
                inS.erase(tmp);
                s.pop();
                outS.insert(tmp);
            }
            else{
                for(int h = 1;h < tmp;h++){
                    if(inS.find(h) == inS.end() && outS.find(h) == outS.end()){
                        s.push(h);
                        inS.insert(h);
                    }
                }
                outS.insert(tmp);
            }
            if(s.size() >= m)
                flag = false;
        }
        if(flag)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

 

pop sequence

标签:

原文地址:http://www.cnblogs.com/Aldorado/p/5240097.html

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