就这一个点过不去
有没有好心人帮调
提供一下Hack也可以
//2023/4/20
//别着急,先通读一遍题目
//别忘了开long long
//写完先看一遍怎么降复杂度
//要么开全局变量要么给定初值
//想想看,有什么情况需要特判
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e6+10;
int num,ans;
int a[MAXN];
int main()
{
int n,c;
cin>>n>>c;
for (int i=0;i<n;i++)
{
cin>>a[i];
}
int l=0;
stack<int> st;
int k=0;
int count=0;
int pos=0;
while(count+st.size()<n)
{
int min=2e9;
for (int i=k;i<k-st.size()+c&&i<n;i++)
{
if(a[i]<min)//找当前直到满栈状态下最小值
{
min=a[i];
pos=i;
}
}
if(st.empty()||min<=st.top())
{
for (int i=k;i<=pos;i++)//前面的进栈
{
st.push(a[i]);
}
k=pos+1;
}
cout<<st.top()<<" ";
st.pop();//遇到最小值就出栈
count++;
}
while(!st.empty())
{
cout<<st.top()<<" ";
st.pop();
}
return 0;
}