标签:
两个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; }
标签:
原文地址:http://www.cnblogs.com/Aldorado/p/5240097.html