#include <cstdio>
#include <algorithm>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
long long a[4],d;
scanf("%lld%lld%lld%lld",&a[0],&a[1],&a[2],&d);
sort(a,a+3);
long long maxn=a[0]*a[0]+a[1]*a[1]+(a[2]+d)*(a[2]+d)+7*a[0]; //第一种加到最大值的情况
long long minn=a[1]-a[0]; //第二种均分。
if(d>minn)
{
a[0]+=minn;
d-=minn;
minn=a[2]-a[1];
if(d>2*minn)
{
a[0]+=minn;
a[1]+=minn;
d-=2*minn;
a[0]+=d/3;
a[1]+=d/3;
a[2]+=d/3;
d%=3;
a[2]+=d;
}
else
{
a[0]+=d/2; //不够两倍的话,就加d/2;
a[1]+=d/2;
d%=2;
a[1]+=d;
}
}
else
a[0]+=d;
long long ans=a[0]*a[0]+a[1]*a[1]+a[2]*a[2]+7*a[0]; //在处理的时候就将a[0]变成最小
printf("%lld\n",max(ans,maxn));
}
}
High Score (三个平方和最小)
猜你喜欢
转载自blog.csdn.net/xigongdali/article/details/82110869
今日推荐
周排行