40pts求助
查看原帖
40pts求助
1094755
xuniaoyin楼主2025/6/14 15:59
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,x,ans=0;
struct node{
	int a,b,dp,id,p;
}arr[100005];
int p[100005],c[100005];
bool cmp(node a,node b){
	return a.dp>b.dp;
}
signed main(){
	cin>>n>>m>>x;
	for(int i=1;i<=n;++i){
		cin>>p[i]>>c[i];
	}
	for(int i=1;i<=m;++i){
		cin>>arr[i].a>>arr[i].b;
		arr[i].id=1;
		arr[i].dp=abs(arr[i].a-arr[i].b);
	}
	int l=1,r=n;
	sort(p+1,p+1+n);
	sort(arr+1,arr+1+m,cmp);
	for(int i=1;i<=m;++i){
		if(arr[i].a>arr[i].b){
			if(c[l]>0){
				c[l]--;
				arr[i].p=p[l];
			}
			else{
				l++;
				c[l]--;
				arr[i].p=p[l];
			}
		}
		else{
			if(c[r]>0){
				c[r]--;
				arr[i].p=p[r];
			}
			else{
				r--;
				c[r]--;
				arr[i].p=p[r];
			}
		}
	}
	for(int i=1;i<=m;++i){
		ans+=2*arr[i].p*arr[i].a+2*(x-arr[i].p)*arr[i].b;
	}
	cout<<ans;
	return 0;
}
2025/6/14 15:59
加载中...