- 滑动窗口 /【模板】单调队列
题解
- 2023-3-25 15:53:25 @
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 1;
int a[N];
int xiao[N];
int ans[N];
int main()
{
int n , k , l = 0 , r = 0;
scanf( "%d %d" , &n , &k);
for( int i = 0; i < n; i++ )
{
scanf( "%d" , &a[i] );
}
for( int i = 0; i < n; i++ )
{
if( l <= r && xiao[l] < i - k + 1 )
{
l++;
}
while( l <= r && a[i] <= a[xiao[r]] )
{
r--;
}
r++;
xiao[r] = i;
if( i >= k - 1)
{
printf( "%d " , a[xiao[l]] );
}
}
l = 0;
r = 0;
cout << endl;
for( int i = 0; i < n; i++ )
{
if( l <= r && xiao[l] < i - k + 1 )
{
l++;
}
while( l <= r && a[i] >= a[xiao[r]] )
{
r--;
}
r++;
xiao[r] = i;
if( i >= k - 1)
{
printf( "%d " , a[xiao[l]] );
}
}
return 0;
}
0 条评论
目前还没有评论...
信息
- ID
- 538
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 58
- 已通过
- 15
- 上传者