subtask#1 #1WA求助
查看原帖
subtask#1 #1WA求助
409774
Maysoul楼主2023/4/20 10:40

就这一个点过不去

有没有好心人帮调

提供一下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;
}
2023/4/20 10:40
加载中...