Cod sursa(job #639487)

Utilizator geniucosOncescu Costin geniucos Data 23 noiembrie 2011 12:46:59
Problema Portal3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<stdio.h>
using namespace std;
int x1,y1,c,mini,n,m,t10,i1,i,k,p1[5],p2[5],q1[5],q2[5],co[5],x[5];
int abs(int q1)
{
	if(q1>=0) return q1;
	else return  q1*-1;
}
int dist(int x11,int y11,int x21,int y21)
{
	return abs(y21-y11)+abs(x21-x11);
}
int valid(int k)
{
	for(i=1;i<k;i++)
		if(x[i]==x[k]) return 0;
	return  1;
}
void back()
{
	k=1;
	x[k]=0;
	while(k>0)
	{
		while(k<=3&&x[k]<3)
		{
			x[k]++;
			x1=0;
			y1=0;
			c=0;
			for(i=1;i<=k;i++)
			{
				c=c+dist(x1,y1,p1[i],q1[i])+co[i];
				x1=p2[i];
				y1=q2[i];
			}
			c=c+dist(x1,y1,n,m);
			if(c<mini) mini=c;
			k++;
			x[k]=0;
		}
		k--;
	}
}
int main()
{
freopen("portal3.in","r",stdin);
freopen("portal3.out","w",stdout);
scanf("%d",&t10);
for(i1=1;i1<=t10;i1++)
{
	scanf("%d",&n);
	scanf("%d",&m);
	for(i=1;i<=3;i++)
	{
		scanf("%lld",&p1[i]);
		scanf("%lld",&q1[i]);
		scanf("%lld",&p2[i]);
		scanf("%lld",&q2[i]);
		scanf("%lld",&co[i]);
	}
	mini=dist(0,0,n,m);
	back();
	printf("%lld\n",mini);
}
return 0;
}