常规前缀和做法,不知道为什么这个点就是过不去 就很抽象
#include <bits/stdc++.h>
#define __init ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
#define int long long
using namespace std;
const int N = 2e5+10;
int y, n, m, s, ans, mw, w[N], v[N], sw[N], sv[N], l[N], r[N];
void solve() {
cin >> n >> m >> s;
ans = s;
for(int i = 1;i <= n;i++) {
cin >> w[i] >> v[i];
mw = max(mw, w[i]);
}
for(int i = 1;i <= m;i++) cin >> l[i] >> r[i];
int pl = 0, pr = mw, mid, f;
while(pl < pr) {
mid = (pl+pr) >> 1;
memset(sv, 0, sizeof(sv));
memset(sw, 0, sizeof(sw));
for(int i = 1;i <= n;i++) {
f = (w[i] >= mid);
sv[i] = sv[i-1] + f*v[i];
sw[i] = sw[i-1] + f;
}
y = 0;
for(int i = 1;i <= m;i++)
y += (sw[r[i]] - sw[l[i]-1]) * (sv[r[i]]- sv[l[i]-1]);
ans = min(ans, abs(s-y));
if(y > s) pl = mid+1;
else if(y < s) pr = mid;
else break;
}
cout << min(ans, abs(s-y));
}
signed main() {
__init;
solve();
return 0;
}