题解
2025-09-27 11:32:28
发布于:广东
8阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 15;
struct node{
long long a,b,v;
}a[maxn];
struct sta{
long long p,c;
bool operator<(const sta o) const{
return p < o.p;
}
}p[maxn];
long long n,m,x;
bool cmp(node x,node y){
return x.v > y.v;
}
int main(){
cin >> n >> m >> x;
for(int i = 1;i <= n;i++){
cin >> p[i].p >> p[i].c;
}
for(int i = 1;i <= m;i++){
cin >> a[i].a >> a[i].b;
a[i].v = a[i].a - a[i].b;
}
sort(a + 1,a + 1 + m,cmp);
sort(p + 1,p + 1 + n);
long long ans = 0;
int l = 1,r = n;
long long flag = m;
for(int j = 1;j <= m;j++){
if(a[j].v > 0){
long long pi = p[l].p,&ci = p[l].c,ai = a[j].a,bi = a[j].b;
ans += ai * pi + bi * (x - pi);
ci--;
if(ci < 1){
l++;
}
}else{
long long pi = p[r].p,&ci = p[r].c,ai = a[j].a,bi = a[j].b;
ans += ai * pi + bi * (x - pi);
ci--;
if(ci < 1){
r--;
}
}
}
cout << ans * 2;
return 0;
}
这里空空如也







有帮助,赞一个