悬关,求助30pts
查看原帖
悬关,求助30pts
534589
S_Kuroko楼主2024/6/19 16:31
#include<bits/stdc++.h>
using namespace std;

int a[10000005];
queue<int> q;

int main()
{
	int n,k;
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}

	for(int i=1;i<=n;i++)
	{
		while(!q.empty()&&q.front()<=i-k)
			q.pop();
		while(!q.empty()&&a[q.front()]>a[i-1])
		{
			q.pop();
		}
		q.push(i);
		while(!q.empty()&&q.front()<=i-k)
			q.pop();
		while(!q.empty()&&a[q.front()]>a[i])
		{
			q.pop();
		}
		if(i>=k)
		{
			cout<<a[q.front()]<<" ";
		}
	}
	while(!q.empty())
	{
		q.pop();
	}
	cout<<endl;
	for(int i=1;i<=n;i++)
	{
		while(!q.empty()&&q.front()<=i-k)
			q.pop();
		while(!q.empty()&&a[q.front()]<a[i-1])
		{
			q.pop();
		}
		q.push(i);
		while(!q.empty()&&q.front()<=i-k)
			q.pop();
		while(!q.empty()&&a[q.front()]<a[i])
		{
			q.pop();
		}
		if(i>=k)
		{
			cout<<a[q.front()]<<" ";
		}
	}
	
	return 0;
} 
2024/6/19 16:31
加载中...