团体程序设计天梯赛
L2-032 彩虹瓶
stl中stack
的使用。栈底设置哨兵便于编程。模拟时,当货架溢出,输出NO
;一轮模拟结束后,如果栈中元素数量大于1,输出NO
,否则输出YES
.
#include <bits/stdc++.h>
using namespace std;
int main(){
int n, m, k;
cin >> n >> m >> k;
for(int i = 0; i <= k - 1; i++){
stack<int> s;
s.push(-1);
int todo = 1, tocome, flag = 1;
for(int j = 0; j <= n - 1; j++){
cin >> tocome;
if(!flag) continue; // 判断不可行之后,读完剩余数据
if(tocome == todo){
todo++;
while(s.top() == todo){
s.pop();
todo++;
}
}
else{
s.push(tocome);
if((int)s.size() > m + 1){
cout << "NO" << endl;
flag = 0;
}
}
}
if(flag){
if((int)s.size() == 1) cout << "YES" << endl;
else cout << "NO" << endl;
}
}
return 0;
}