蒟蒻求助QwQ P2698
//蒟蒻求调
#include<bits/stdc++.h>
using namespace std;
int n,d,a[(int)1e5],t1,t2;
int f(int mid){//本蒟蒻尝试用两个单调队列看是否符合要求
deque<int> q1;
deque<int> q2;
for(int i = 0;i<n;i++){
while(!q1.empty()&&a[i]<=a[q1.front()])q1.pop_front();
while(!q2.empty()&&a[i]>=a[q2.front()])q2.pop_front();
q1.push_front(i);
q2.push_front(i);
if(i-q1.back()>=mid){
q1.pop_back();
q1.pop_back();
}
if(a[q1.back()]-a[q2.back()]>=d)return 1;
}
return 0;
}
int main(){
cin>>n>>d;
for(int i=0;i<n;i++){
cin>>t1>>t2;
a[t1] = t2;
}
int l = 1,r = 1e6+10,mid;
while(l<r){//本蒟蒻尝试着用二分盆子宽度
// cout<<l<<' '<<mid<<' '<<r<<endl;
mid = (l+r)/2;
if(f(mid))r = mid;
else l = mid+1;
}
cout<<l;
}
szo