还没加上前缀和呢,光是基本的都过不了,但是样例可以过
#include <iostream>
#include <iomanip>
#include<string>
#include<queue>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;
int n, m;
long long s,ans=1000000000000;
int obj[200000][2], li[200000], ri[200000];
long long Cal(int mid) {
long long s1 = 0;
for (int i = 0; i < m; i++) {
long long w = 0, v = 0;
for (int j = li[i] - 1; j < ri[i]; j++) {
if (obj[j][0] >= mid) {
w ++;
v += obj[i][1];
}
}
s1 += w * v;
}
return s1;
}
int main()
{
cin >> n >> m>>s;
int l = 1000000, r = 0;
for (int i = 0; i < n; i++) {
cin >> obj[i][0] >> obj[i][1];
l = min(obj[i][0], l);
r = max(obj[i][0], r);
}
for (int i = 0; i < m; i++) {
cin >> li[i] >> ri[i];
}
int mid = 0;
while (l <= r) {
mid = (l + r) / 2;
long long s1 = Cal(mid);
if (s1 > s) {
l = mid + 1;
s1 -= s;
}
else {
if (s1 < s) {
r = mid - 1;
s1 = s - s1;
}
else {
ans = 0;
break;
}
}
ans = min(ans, s1);
}
cout << ans;
}