80分求助(#2 #10TLE了)
查看原帖
80分求助(#2 #10TLE了)
874984
ho33楼主2023/3/19 10:41

用的是单调队列,我感觉单调队列挺快的了....


#include<bits/stdc++.h>
using namespace std;
int n,m;
int arr[40000010];
class Mqueue{
 public:
  deque<int>que;
  void push(int val){
    while(!que.empty()&&que.back()>val){
      que.pop_back();
    }
    que.push_back(val);
  }
  void pop(int val){
    if(!que.empty()&&que.front()== val){
      que.pop_front();
    }
  }
  int front(){
    return que.front();
  }
};
int main(){
  cin>>n>>m;
  Mqueue que;
  vector<int>ans;
  for(int i = 1;i <= n;i++){
    cin>>arr[i];
  }
  cout<<'0'<<endl;
  for(int i = 2;i <= n;i++){
    if(i>m){
      que.pop(arr[i-1-m]);
    }
    que.push(arr[i-1]);
    ans.push_back(que.front());
  }
  for(int i = 0;i <ans.size();i++){
    cout<<ans[i]<<endl;
  }
}
2023/3/19 10:41
加载中...