Pagini recente » Cod sursa (job #2312757) | Cod sursa (job #741970) | Cod sursa (job #3128796) | Cod sursa (job #984675) | Cod sursa (job #641483)
Cod sursa(job #641483)
#include <cstdio>
long long abs(long long x)
{if (x<0) return -x; else return x;}
long long n,m,i,j,x[8],y[8],sol[8],t,c[5];
int main()
{
freopen("portal3.in","r",stdin);
freopen("portal3.out","w",stdout);
scanf("%lld",&t);
while (t--)
{
scanf("%lld %lld",&n,&m);
for (i=0;i<3;++i)
{scanf("%lld %lld %lld %lld %lld",&x[i*2],&y[i*2],&x[i*2+1],&y[i*2+1],&c[i]);
sol[i*2]=x[i*2]+y[i*2]; sol[i*2+1]=x[i*2+1]+y[i*2+1];
}
sol[6]=n+m;x[6]=n;y[6]=m;
for (i=0;i<6;++i)
{for (j=0;j<7;++j)
if ((i/2!=j/2) && (sol[i]+abs(x[i]-x[j])+abs(y[i]-y[j])<sol[j]))
sol[j]=sol[i]+abs(x[i]-x[j])+abs(y[i]-y[j]);
if ((i%2==0) && (sol[i]+c[i/2]<sol[i+1]))
sol[i+1]=sol[i]+c[i/2];
if ((i%2==1) && (sol[i]+c[i/2]<sol[i-1]))
sol[i-1]=sol[i]+c[i/2];
}
printf("%lld\n",sol[6]);
}
return 0;
}