90分求调
查看原帖
90分求调
1024884
Sean1221楼主2024/7/10 10:08
#include<bits/stdc++.h>
using namespace std;
struct num
{
	int val,id;
	bool operator < (const num t) const
	{
		return val<t.val;
	}
};
struct num2
{
	int val,id;
	bool operator < (const num2 t) const
	{
		return val>t.val;
	}
};
int a[1000005];
priority_queue<num> q;
priority_queue<num2> q2;
int main()
{
	int n,k;
	scanf("%d%d",&n,&k);
	for (int i=1;i<=k;i++)
	{
		scanf("%d",&a[i]);
		q2.push({a[i],i});
	}
	//cout<<q.size()<<endl;
	printf("%d ",q2.top().val);
	for (int i=k+1;i<=n;i++)
	{
		cin>>a[i];
		q2.push({a[i],i});
		while (!q2.empty()&&q2.top().id<=i-k)
		{
			q2.pop();
		}
		printf("%d ",q2.top().val);
	}
	printf("\n");
	for (int i=1;i<=k;i++)
	{
		q.push({a[i],i});
	}
	//cout<<q.size()<<endl;
	printf("%d ",q.top().val);
	for (int i=k+1;i<=n;i++)
	{
		q.push({a[i],i});
		while (!q.empty()&&q.top().id<=i-k)
		{
			q.pop();
		}
		printf("%d ",q.top().val);
	}
	return 0;
}
2024/7/10 10:08
加载中...