在oj上没有找到这题,不知道代码是否是正确的。
开始没时间做了,后来重新读了一片题,发现自己误解了题意,将叠罗汉认为成了叠金字塔,文字描述较多,但主要就是个栈的模拟。
#include <iostream>
using namespace std;
int const maxn = 10010;
int main() {
int p = -1;
int qu[maxn];
int t;
cin>>t;
while (t--) {
int n,m,x;
cin>>n>>m>>x;
for (int i=0;i<m;i++) {
int order;
cin>>order;
if (order==-1) p--;
else {
qu[++p] = order;
}
}
int ans = 0;
for (;p>=0;p--) {
ans+=p-1;
if (qu[p]==n) {
break;
}
}
if(ans<=x) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
}