(双)指针做法求调 90pts WA on #3#4 玄关
查看原帖
(双)指针做法求调 90pts WA on #3#4 玄关
1020063
chenxi2009楼主2025/1/21 15:33
#include<bits/stdc++.h> 
using namespace std;
int n,m,t[200000],s[200000],it,l;
unsigned long long a,b,c,ans = -1,pns,ft,nd;
int main(){
	scanf("%llu%llu%llu%d%d",&a,&b,&c,&n,&m);
	for(int i = 1;i <= n;i ++) scanf("%d",&t[i]);
	for(int i = 1;i <= m;i ++) scanf("%d",&s[i]);
	sort(t + 1,t + n + 1);
	sort(s + 1,s + m + 1);
	for(int i = 1;i <= m;i ++) nd += s[i];
	for(int i = 1;i <= s[m];i ++){
		while(it < n && t[it + 1] < i) it ++;
		while(l < m && s[l + 1] < i) l ++;
		pns += it,ft += l,nd -= m - l;
		if(a >= b){//only op2
			ans = min(ans,pns * c + nd * b);
		}
		else{
			if(ft >= nd){
				ans = min(ans,pns * c + ft * a);
			}
			else{
				ans = min(ans,pns * c + ft * a + (nd - ft) * b);
			}
		}
	}
	printf("%llu",ans);
	return 0;
}
2025/1/21 15:33
加载中...