求助!!90分!!!第三个点WA了!!!在线等挺急的!!!
查看原帖
求助!!90分!!!第三个点WA了!!!在线等挺急的!!!
371925
Cosmos_zzx楼主2023/8/23 19:30
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,r,c[1000001];
struct node
{
	int a,b;
}a[1000001];
int b[1000001];
bool cmp(node x,node y)
{
	return x.b>y.b;
}
bool cmp1(int x,int y)
{
	return x>y;
}
signed main()
{
	cin>>n>>m>>r;
	for(int i=1;i<=n;i++)
		cin>>c[i];
	sort(c+1,c+1+n,cmp1);
	for(int i=1;i<=m;i++)
		cin>>a[i].a>>a[i].b;
	sort(a+1,a+1+m,cmp);
	for(int i=1;i<=r;i++)
		cin>>b[i];
	sort(b+1,b+1+n,cmp1);
	for(int i=1;i<=r;i++)
		b[i]+=b[i-1];
	int t=1,z=0,sum=0,ans=0;
	for(int i=0;i<=n;i++)
	{
		z+=c[i];
		while(t<=m && z>=a[t].a)
		{
			sum+=a[t].a*a[t].b;
			z-=a[t].a;
			t++;
		}
		if(t<=m)
		{
			sum+=z*a[t].b;
			a[t].a-=z;
			z=0;
		}
		ans=max(ans,sum+b[min(n-i,r)]);
	}
	cout<<ans;
	return 0;
}
2023/8/23 19:30
加载中...