0分求调!!!
查看原帖
0分求调!!!
965313
youth191954楼主2024/12/13 22:31
#include<bits/stdc++.h>
using namespace std;
const int mx=1e5+5;
int n,m,x,p[mx],c[mx],cnt1,cnt2,ans;
struct node1{int a,b;}y[mx];
struct node2{int a,b;}f[mx];
struct node3{int a,b;}g[mx];
struct node4{int p,c;}id[mx];
bool cmp1(node4 a,node4 b){return a.p<b.p;}
bool cmp2(node2 a,node2 b){return (a.a-a.b)>(b.a-b.b);}
bool cmp3(node3 a,node3 b){return (a.b-a.a)>(b.b-b.a);}
int main(){
	cin>>n>>m>>x;
	for(int i=1;i<=n;i++){
		cin>>id[i].p>>id[i].c;
	}
	sort(id+1,id+n+1,cmp1);
	for(int i=1;i<=m;i++){
		cin>>y[i].a>>y[i].b;
		if(y[i].a>=y[i].b)f[++cnt1].a=y[i].a,f[cnt1].b=y[i].b;
		else g[++cnt2].a=y[i].a,g[cnt2].b=y[i].b;
	}
	sort(f+1,f+cnt1+1,cmp2);
	sort(g+1,g+cnt2+1,cmp3);
	for(int i=1,j=1;i<=cnt1,j<=n;i++){
		if(i==cnt1+1)break;
		if(id[j].c==0)j++;
		id[j].c--;
		ans+=2*(f[i].a*id[j].p+f[i].b*(x-id[j].p));
	//	cout<<id[j].p<<" "<<id[j].c<<" "<<endl;
	}
	for(int i=1,j=n;i<=cnt2,j>=1;i++){
		if(i==cnt2+1)break;
		if(id[j].c==0)j--;
		id[j].c--;
		ans+=2*(g[i].a*id[j].p+g[i].b*(x-id[j].p));
	}
	cout<<ans;
	return 0;
} 
2024/12/13 22:31
加载中...