P1886,总做不对,感觉思路跟题解一样啊
#include<bits/stdc++.h>
#define Say read();
#define Hello minv();
#define World maxv();
#define kMaxN 1000006
using namespace std;
int n,k,ary[kMaxN]={0},ansn[kMaxN]={0},ansx[kMaxN]={0};
deque<int> qia;
deque<int> qib;
deque<int> qaa;
deque<int> qab;
inline void read(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>ary[i];
}
return;
}
inline void minv(){
int l=1-k,r=0;
qia.push_back(ary[1]);
qib.push_back(1);
while(l<=(n-k+1)){
if(qib.front()<l){
qia.pop_front();
qib.pop_front();
}
if(r<=n){
while(!qia.empty()){
if(ary[r]<qia.back()){
break;
}
qia.pop_back();
qib.pop_back();
}
qia.push_back(ary[r]);
qib.push_back(r);
r++;
}
if(l>0){
cout<<qia.front()<<" ";
}
l++;
}
cout<<"\n";
return;
}
inline void maxv(){
int l=1-k,r=0;
qaa.push_back(ary[1]);
qab.push_back(1);
while(l<=(n+1-k)){
if(qab.front()<l){
qaa.pop_front();
qab.pop_front();
}
if(r<=n){
while(!qaa.empty()){
if(ary[r]>qaa.back()){
break;
}
qaa.pop_back();
qab.pop_back();
}
qaa.push_back(ary[r]);
qab.push_back(r);
r++;
}
if(l>0){
cout<<qia.front()<<" ";
}
l++;
}
cout<<"\n";
return;
}
int main(){
Say Hello World
return 0;
}