栈出栈和入栈的模拟
注意细节
容量的含义要理解清楚
#include <iostream>
#include <algorithm>
#include <vector>
#include <stack>
using namespace std;
int n, m, k, x;
int main(){
cin>>n>>m>>k;
while(k--){
vector<int> nums, load;
for(int i = 1; i <= n; i++){
cin >> x;
nums.push_back(x);
load.push_back(i);
}
stack<int> st;
int j = 0;
for(int i = 0; i < n; i++){
if(nums[i] != load[j]){
st.push(nums[i]);
if(st.size() > m) {
break;
}
}else{
j++;
while(st.size() && st.top() == load[j]){
st.pop();
j++;
}
}
}
if(j == n && st.empty()) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}