Pagini recente » Cod sursa (job #443) | Cod sursa (job #2805799) | Cod sursa (job #3260186) | Cod sursa (job #295316) | Cod sursa (job #635478)
Cod sursa(job #635478)
#include<stdio.h>
int abs(int a)
{
if(a>=0)
return a;
return 0-a;
}
struct joe
{
int x1,y1,x2,y2; long long c;
};
joe port[5];
joe miniq [40];
inline int rez()
{
int nrq=0,nrq2=0,n,m,i,j,min;
scanf("%d%d",&n,&m);
miniq[0].x1=0;
miniq[0].y1=0;
miniq[0].c=0;
min=n+m;
for(i=1;i<=3;++i)
{
scanf("%d%d%d%d%lld",&port[i].x1,&port[i].y1,&port[i].x2,&port[i].y2,&port[i].c);
for(j=nrq;j>=0;--j)
{
++nrq2;
miniq[nrq2].c=abs(port[i].x1-miniq[j].x1)+abs(port[i].y1-miniq[j].y1)+miniq[j].c+port[i].c;
miniq[nrq2].x1=port[i].x2;
miniq[nrq2].y1=port[i].y2;
++nrq2;
miniq[nrq2].c=abs(port[i].x2-miniq[j].x1)+abs(port[i].y2-miniq[j].y1)+miniq[j].c+port[i].c;
miniq[nrq2].x1=port[i].x1;
miniq[nrq2].y1=port[i].y1;
}
nrq=nrq2;
}
for(i=1;i<=nrq;++i)
{
miniq[i].c=miniq[i].c+abs(n-miniq[i].x1)+abs(m-miniq[i].y1);
if(miniq[i].c<min)
min=miniq[i].c;
}
return min;
}
int main()
{
freopen("portal3.in","r",stdin);
freopen("portal3.out","w",stdout);
int i,t;
scanf("%d",&t);
for(i=1;i<=t;++i)
printf("%d\n",rez());
return 0;
}