单调队列模板题,不解释
点击就送屠龙宝刀
点击就送双倍经验
三倍经验就有点过分了啊
#include<iostream>
using namespace std;
const int MAXN = 2e6 + 5;
struct dot
{
int x,z;
dot(){x = 0;z = 0;}
}q[MAXN];
int s=1,t=0;//队列,头指针,尾指针
void push(int x,int z)
{
while(q[t].x > x && t >= s)
t --;
t ++;
q[t].x = x;
q[t].z = z;
return;
}
void pop()
{
s ++;
}
dot front()
{
return q[s];
}
int n,k,z,ans;
int main()
{
scanf("%d %d",&n,&k);
cout << front().x << endl;
for(int i = 1;i < n;i ++)
{
scanf("%d",&z);
push(z,i + k);
dot x = front();
while(x.z <= i)
{
pop();
x = front();
}
printf("%d\n",x.x);
}
return 0;
}