Cod sursa(job #641483)

Utilizator c_adelinaCristescu Adelina c_adelina Data 28 noiembrie 2011 16:53:43
Problema Portal3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#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;
}