Cod sursa(job #641470)

Utilizator c_adelinaCristescu Adelina c_adelina Data 28 noiembrie 2011 16:38:40
Problema Portal3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>

int abs(int x)
{if (x<0) return -x; else return x;}

int n,m,i,j,x[8],y[8],sol[8],rez[8],t,c[5];
int main()
{

	
	freopen("portal3.in","r",stdin);
	freopen("portal3.out","w",stdout);
	scanf("%d",&t);
	while (t--)
	{
		scanf("%d %d",&n,&m);
		for (i=0;i<3;++i)
			{scanf("%d %d %d %d %d",&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]+c[i/2]+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("%d\n",sol[6]);
	}
return 0;
}