WA on #3 4 9 10.
更神秘的是我本地的 VS Code 在第一组样例会报 RE,但是洛谷 IDE 可以正常运行。
#include<bits/stdc++.h>
// #pragma G++ optimize(2)
using namespace std;
using ll=long long;
using ull=unsigned long long;
using ld=long double;
using pii=pair<int,int>;
#define fi first
#define se second
constexpr int N=5e5+5;
int n,d,k,x[N];
ll s[N],dp[N];
deque<int> q;
bool check(int g) {
memset(dp,0xcf,sizeof(dp));
dp[0]=0;
while(!q.empty()) q.pop_back();
int p=0;
for(int i=1;i<=n;i++) {
// for(int j=0;j<i;j++) {
// if(x[i]-x[j]>=d-g&&x[i]-x[j]<=d+g)
// dp[i]=max(dp[i],dp[j]+s[i]);
// }
while(p<i&&x[i]-x[p]>=max(1,d-g)&&x[i]-x[p]<=d+g) {
while(!q.empty()&&dp[q.back()]<=dp[p]) q.pop_back();
q.push_back(p++);
}
while(!q.empty()&&!(x[i]-x[q.front()]>=max(1,d-g)&&x[i]-x[q.front()]<=d+g)) q.pop_front();
dp[i]=max(dp[i],dp[q.front()]+s[i]);
if(dp[i]>=k) return 1;
}
return 0;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n>>d>>k;
for(int i=1;i<=n;i++) cin>>x[i]>>s[i];
int l=0,r=1e9+1,ans=-1;
while(l<=r) {
int mid=(l+r)/2;
if(check(mid)) {
ans=mid;
r=mid-1;
}
else l=mid+1;
}
cout<<ans<<"\n";
return 0;
}