#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<iomanip>
#include<limits.h>
#include<stack>
#include<cstdlib>
#include<stdlib.h>
#include<queue>
#include<map>
#include<vector>
#define INF 0x3f3f3f3f
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
using namespace std;
typedef unsigned long long ll;
int n,m;
ll A,B,C;
int t[100005],b[100005];
ll calc1(int);//出成绩时间调整的不满意度
ll calc2(int);//同学们等待不满意度
ll ans;
int main()
{
cin>>A>>B>>C>>n>>m;
for(int i=1;i<=n;++i)cin>>t[i];
sort(t+1,t+n+1);
if(C>=1e16)
{
cout<<calc1(t[1]);
return 0;
}
for(int j=1;j<=m;++j)
{
cin>>b[j];
}
sort(b+1,b+1+m);
int maxx=100005,minn=1;
ans=1e16;
while(maxx-minn>10)
{
int mid1=minn+(maxx-minn)/3;
int mid2=maxx-(maxx-minn)/3;
if(calc1(mid1)+calc2(mid1)<=calc1(mid2)+calc2(mid2))maxx=mid2;
else minn=mid1;
}
for(int i=minn;i<=maxx;++i)
{
ans=min(ans,calc1(i)+calc2(i));
}
cout<<ans;
return 0;
}
ll calc1(int time)//出成绩时间调整的不满意度
{
ll x=0,y=0;
for(int i=1;i<=m;++i)
{
if(b[i]<time)x+=time-b[i];
else y+=b[i]-time;
}
if(A<B)return A*min(x,y)+B*(y-min(x,y));
return B*y;
}
ll calc2(int time)//同学们等待不满意度
{
ll sum=0;
for(int i=1;i<=n;++i)
{
if(t[i]<time)sum+=time-t[i];
}
return sum*C;
}
(前面头文件宏定义是习惯的初始化模板,请忽略~) 一遍遍对照答案看,为什么会出错呢?5/6有何奇妙之处?