用了很蠢的方法
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
const int N=5000000+10;
ll t[N];
ll n,a,b;
ll mi1,mi2,ma1,ma2,m;
int mip1,mip2,map1,map2,mp;
int f[10];
int main()
{
int T,kase=0;
scanf("%d",&T);
while(T--)
{
ll v;
mi1=mi2=1e6+10;
ma1=ma2=-1e6-10;
m=1e6+10;
scanf("%lld%lld%lld",&n,&a,&b);
for(int i=0;i<n;i++)
{
scanf("%lld",&v);
t[i]=v;
if(v<mi1)
{
mi2=mi1;
mip2=mip1;
mi1=v;
mip1=i;
}
else if(v<mi2)
{
mi2=v;
mip2=i;
}
if(v>ma1)
{
ma2=ma1;
map2=map1;
ma1=v;
map1=i;
}
else if(v>ma2)
{
ma2=v;
map2=i;
}
v=abs(v);
if(v<m)
{
m=v;
mp=i;
}
}
ll ans=-1e15-10;
f[0]=mip1;f[1]=mip2;f[2]=map1;f[3]=map2;f[4]=mp;
for(int i=0;i<5;i++)
for(int j=0;j<4;j++)
if(i!=j)
{
//cout<<f[i]<<" "<<f[j]<<" "<<t[f[i]]*t[f[i]]*a+t[f[j]]*b<<endl;
ans=max(ans,t[f[i]]*t[f[i]]*a+t[f[j]]*b);
}
printf("Case #%d: %lld\n",++kase,ans);
}
return 0;
}