#include <bits/stdc++.h>
#define int long long
#define mid ((l + r) >> 1)
using namespace std;
int n, d, k, h, t, f[500005], x[500005], s[500005], q[500005];
pair<int, int> now[500005];
void ins(pair<int, int> u)
{
while (h < t && now[t - 1] < u)
{
t --;
}
now[t ++] = u;
}
void era(pair<int, int> u)
{
if (h < t && now[h] == u) h ++;
}
int mxi()
{
if (h >= t) return (-1ll << 60);
return now[h].first;
}
bool fuc(int maxx, int minx, int limit)
{
int p = 0, q = 0;
h = t = 0;
f[0] = 0ll;
for (int i = 1; i <= n; i ++)
{
while (x[i] - x[q] >= minx)
{
ins(make_pair(f[q], q));
q ++;
}
while (x[i] - x[p] >= maxx)
{
ins(make_pair(f[p], p));
p ++;
}
f[i] = mxi() + s[i];
if (f[i] >= limit) return 1;
}
return 0;
}
signed main()
{
cin >> n >> d >> k;
for (int i = 1; i <= n; i ++)
{
cin >> x[i] >> s[i];
}
int l = 0, r = 1000000007;
while (l < r)
{
if (fuc(max(int(d - mid), 1), d + mid, k)) r = mid;
else l = mid + 1;
}
if (r == 1000000007) cout << -1;
else cout << r;
return 0;
}
这个代码编都过不了
行 列 描述
0 -1 In function 'int main()':
2 13 [错误] expected primary-expression before 'long'
56 15 [说明] in expansion of macro 'int'