https://pintia.cn/problem-sets/994805342720868352/problems/994805427332562944
/ * *後に進んだ、スタックを使用してください *横取りスタック ノートスタック容量* * / の#include <iostreamの> 使用して 、名前空間STD; する#include <cstdioを> する#include <スタック> スタック < int型 > スタック; constの int型 MAXN = 1010 ; int型ARR [MAXN]; int型のmain(){ int型、容量、長さ、チェック scanfの(" %D%D%D "、および容量、および長さ、およびチェック); 一方は、(チェック- ){ しばらく(スタック!。空の()){ //プリエンプションスタック Stack.pop(); } のための(INT I = 1 ; I ++は、私は=長さ< ){ scanfの(" %Dを"&ARR [I]は); // なお、ループの入力形式およびARR [I] } INT =今1。; BOOLをフラグに= trueに、 のために(INT I = 1 <; =長さI ++のIは{) Stack.push(I) IF(Stack.size()> 容量){ フラグに = falseに、 BREAK; } // 現在の要素と同一のスタック順序の最上位要素位置 一方(Stack.empty()&& Stack.top()==!{ARR [今]) Stack.pop(); 今 ++ ; } } IF(Stack.empty()== trueにフラグに== && 真の){ のprintf(" N- \ YES " ); } 他{ のprintf(" NO \ N- " ); } } 戻り 0 ; }