代码
#include<bits/stdc++.h>
using namespace std;
#define LL long long
const int N = 200010;
typedef int ll;
typedef float ff;
ll n, m, w[N], v[N], l[N], r[N];
LL s, ans = 1e12 + 10, a[N], b[N];
ff c;
LL check(LL W) {
memset(a, 0, sizeof a);
memset(b, 0, sizeof b);
c = 1;
for (ll i = c; i <= n; i ++) {
if (w[i] >= W)
a[i] += a[i - 1] + 1, b[i] += b[i - 1] + v[i];
else
a[i] = a[i - 1], b[i] = b[i - 1];
}
LL res = 0;
for (ll i = c; i <= m; i ++)
res += (a[r[i]] - a[l[i] - 1]) * (b[r[i]] - b[l[i] - 1]);
return s - res;
}
ff d;
int main() {
cin >> n >> m >> s;
d=1;
for (ll i = d; i <= n; i ++)
cin >> w[i] >> v[i];
for (ll i = d; i <= m; i ++)
cin >> l[i] >> r[i];
LL ss = 0, rr = 1e6;
while (ss < rr) {
LL mid = ss + rr >> 1;
LL val = check(mid);
if (val > 0)
rr = mid;
else
ss = mid + 1;
ans = min(ans, abs(val));
}
printf("%lld\n",ans);//cout << ans << endl;
return 0;
}
求点赞、关注