P1886求助
查看原帖
P1886求助
453332
Hefei_Metro_Line_5N楼主2022/4/26 21:34

本人不知哪里错了 求调

#include<bits/stdc++.h>
using namespace std;
const int dupi=1000010;
int a[dupi],q[dupi],ans1[dupi],ans2[dupi];
int main()
{
	int n,k,f,r;
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	f=r=0;
	for(int i=1;i<=n;i++)
	{
		while(f<r&&a[q[r]]>=a[i])
		{
			r--;
		}
		r++;
		q[r]=i;
		while(f<r&&i-q[f+1]+1>k)
		{
			f++;
		}
		ans1[i]=a[q[f+1]];
	}
	r=0;
	for(int i=k;i<=n-1;i++)
	{
		cout<<ans1[i]<<" ";
	}
	cout<<ans1[n]<<endl;
	r=f=0;
	for(int i=1;i<=n;i++)
	{
		while(f>r&&a[q[r]]<=a[i])
		{
			r--;
		}
		r++;
		q[r]=i;
		while(f>r&&i-q[f+1]+1>k)
		{
			f++;
		}
		ans2[i]=a[q[f+1]];
	}
	for(int i=k;i<=n-1;i++)
	{
		cout<<ans2[i]<<" ";
	}
	return 0;
}
2022/4/26 21:34
加载中...