看上去没问题啊,就是马蜂奇特了点。
by Igallta @ 2024-04-27 20:11:16
@[fuxuanshuo](/user/727172)
找到原因了,改成这样就 A 乐:
```cpp
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=2e6+10;
vector <ll> mi;
vector <ll> mx;
deque <ll> q1;
deque <ll> q2;
ll n,k,a[N];
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++)
{
if(!q1.empty()&&i-k+1>q1.front()) q1.pop_front();
if(!q2.empty()&&i-k+1>q2.front()) q2.pop_front();
while(!q1.empty()&&a[i]>a[q1.back()]) q1.pop_back();
while(!q2.empty()&&a[i]<a[q2.back()]) q2.pop_back();
q2.push_back(i);
q1.push_back(i);
if(i>=k)
{
mx.push_back(a[q1.front()]);
mi.push_back(a[q2.front()]);
}
}
for(auto i:mi)
{
cout<<i<<" ";
}
cout<<endl;
for(auto i:mx)
{
cout<<i<<" ";
}
return 0;
}
```
by Igallta @ 2024-04-27 20:13:55
您为什么要先给队列 push 一个 1 然后从 2 开始,您怎么保证第一个一定是 1?
by Igallta @ 2024-04-27 20:14:36
给我一个关注吧~
by Igallta @ 2024-04-27 20:16:06
@[Iam_God](/user/813622) 谢谢你!!
by Nake_fu @ 2024-04-28 12:38:22