洛谷P1886
代码简单记录下
#include "bits/stdc++.h"
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define All(x) for(auto item:x)
const int N=2e6+10;
int n,m;
vector<int> arr(N),mi,ma;
void formi(){
deque<int> tool;
For(i,n){
while(!tool.empty()&&arr[tool.back()]>=arr[i])
tool.pop_back();
tool.push_back(i);
while(!tool.empty()&&tool.front()<=i-m)
tool.pop_front();
if(i>=m)
mi.emplace_back(arr[tool.front()]);
}
}
void forma(){
deque<int> tool;
For(i,n){
while(!tool.empty()&&arr[tool.back()]<=arr[i])
tool.pop_back();
tool.push_back(i);
while(!tool.empty()&&tool.front()<=i-m)
tool.pop_front();
if(i>=m)
ma.emplace_back(arr[tool.front()]);
}
}
inline void solve(){
cin>>n>>m;
For(i,n){cin>>arr[i]; }
formi();
forma();
All(mi){cout<<item<<" "; }
cout<<endl;
All(ma){cout<<item<<" "; }
cout<<endl;
}
int main(){
int num=1;
//cin>>num;
solve();
return 0;
}