#include <bits/stdc++.h>
using namespace std;
const int maxn=2000005;
typedef long long ll;
typedef pair<ll,int>P;
#define fi first
#define se second
inline void read(int &x)
{
x=0;int f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
x*=f;
}
inline void read(ll &x)
{
x=0;int f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
x*=f;
}
int n,m;
ll a[maxn];
ll minn[maxn];
deque<P>Q;
void get_min()
{
int now=1;
Q.push_back(P(a[now],now));
minn[now]=a[now];
now++;
while(now<=n)
{
// printf("%d\n",now);
while(!Q.empty()&&Q.back().fi>a[now])
{
Q.pop_back();
}
Q.push_back(P(a[now],now));
P top=Q.back();
P fr=Q.front();
if(top.se-fr.se>=m)
{
Q.pop_front();
}
minn[now]=Q.front().fi;
now++;
}
}
int main()
{
read(n);
read(m);
for(int i=1;i<=n;i++)
{
read(a[i]);
}
get_min();
minn[0]=0;
for(int i=0;i<n;i++)
{
printf("%lld\n",minn[i] );
}
}
czl蒟蒻的模板库8——单调队列
最新推荐文章于 2017-11-10 15:12:40 发布