Cod sursa(job #639238)

Utilizator thesilverhand13FII Florea Toma Eduard thesilverhand13 Data 22 noiembrie 2011 20:48:13
Problema Portal3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 4.71 kb
 # include <fstream>

 using namespace std;

 ifstream f("portal3.in");
 ofstream g("portal3.out");

 int t;
 long long n, m;
 int nrsol;

 long long minim;

  
 long long sol[ 100 ];

 long long ab( long long n )
 {
	 if ( n < 0 )
		 return -n;
	 return n;
 }
 
 struct portal
 {
	 int x, y, xf, yf, c;
 };
 
 portal d[ 6 ];
 
 void afisare();

void rezolva()
{
	int i, j, k;
	nrsol = 1;
	
	 n ++;
	 m ++;
	 
	 sol[ 1 ] = ( n - 1 ) + ( m - 1 );
	 
	
	 for ( i = 1 ; i <= 3 ; i ++ )
	 {
		 nrsol++;
		 sol[ nrsol ] =  ( d[ i ].x - 1 ) + ( d[ i ].y - 1 ) + ab( d[ i ].xf - n ) + ab( d[ i ].yf - m ) + d[ i ].c;
		 nrsol++;
		 sol[ nrsol ] =  ( d[ i ].xf - 1 ) + ( d[ i ].yf - 1 ) + ab( d[ i ].x - n ) + ab( d[ i ].y - m ) + d[ i ].c;
		// g <<  d[ i ].x - 1  << " " <<  d[ i ].y - 1 << " " << abs( d[ i ].xf - n ) << " " << abs( d[ i ].yf - m ) << " " << d[ i ].c <<  "\n";
	 }
	
	 for ( i = 1 ; i <= 3 ; i ++ )
	 {
		 for ( j = 1 ; j <= 3 ; j++ )
			 if ( i != j )
			 {
				 nrsol++;
				 sol[ nrsol ] = ( d[ i ].x - 1  ) + ( d[ i ].y - 1 ) + ab( d[ i ].xf - d[ j ].x ) + ab ( d[ i ].yf  - d[ j ].y  ) + ab( d[ j ].xf - n ) + ab( d[ j ].yf - m ) + d[ i ].c + d[ j ].c;
				 
				 nrsol++;
				 sol[ nrsol ] = ( d[ i ].x - 1  ) + ( d[ i ].y - 1 ) + ab( d[ i ].xf - d[ j ].xf ) + ab ( d[ i ].yf  - d[ j ].yf  ) + ab( d[ j ].x - n ) + ab( d[ j ].y - m ) + d[ i ].c + d[ j ].c;
				 
				 nrsol++;
				 sol[ nrsol ] = ( d[ i ].xf - 1  ) + ( d[ i ].yf - 1 ) + ab( d[ i ].x - d[ j ].x ) + ab ( d[ i ].y  - d[ j ].y  ) + ab( d[ j ].xf - n ) + ab( d[ j ].yf - m ) + d[ i ].c + d[ j ].c;
				 
				 nrsol++;
				 sol[ nrsol ] = ( d[ i ].xf - 1  ) + ( d[ i ].yf - 1 ) + ab( d[ i ].xf - d[ j ].xf ) + ab ( d[ i ].yf  - d[ j ].yf  ) + ab( d[ j ].x - n ) + ab( d[ j ].y - m ) + d[ i ].c + d[ j ].c;
				 
			 }
	 }
	 
	 for ( i = 1 ; i <= 3 ; i++ )
		 for ( j = 1 ; j <= 3 ; j++ )
			 for ( k = 1 ; k <= 3 ; k++ )
				 if ( i != j && i != k && j != k )
				 {
					 nrsol++;
					 sol[ nrsol ] = ( d[ i ].x - 1 ) + ( d[ i ].y - 1 ) +      ab( d[ i ].xf - d[ j ].x ) + ab( d[ i ].yf - d[ j ].y ) +     ab( d[ j ].xf - d[ k ].x ) + ab( d[ j ].yf - d[ k ]. y  ) +     ab( d[ k ].xf - n ) + ab( d[ k ].yf - m )     + d[ i ].c + d[ j ].c + d[ k ]. c;    
					 
					 nrsol++;
					 sol[ nrsol ] = ( d[ i ].x - 1 ) + ( d[ i ].y - 1 ) +      ab( d[ i ].xf - d[ j ].x ) + ab( d[ i ].yf - d[ j ].y ) +     ab( d[ j ].xf - d[ k ].xf ) + ab( d[ j ].yf - d[ k ]. yf ) +      ab( d[ k ].x - n ) +  ab( d[ k ].y - m )     + d[ i ].c + d[ j ].c + d[ k ]. c; 
					 
					 nrsol++;
					 sol[ nrsol ] = ( d[ i ].x - 1 ) + ( d[ i ].y - 1 ) +      ab( d[ i ].xf - d[ j ].xf ) + ab( d[ i ].yf - d[ j ].yf ) +     ab( d[ j ].x - d[ k ].x ) + ab( d[ j ].y - d[ k ]. y  ) +     ab( d[ k ].xf - n ) + ab( d[ k ].yf - m )     + d[ i ].c + d[ j ].c + d[ k ]. c;
					 
					 nrsol++;
					 sol[ nrsol ] = ( d[ i ].x - 1 ) + ( d[ i ].y - 1 ) +      ab( d[ i ].xf - d[ j ].xf ) + ab( d[ i ].yf - d[ j ].yf ) +     ab( d[ j ].x - d[ k ].xf ) + ab( d[ j ].y - d[ k ]. yf ) +      ab( d[ k ].x - n ) +  ab( d[ k ].y - m )     + d[ i ].c + d[ j ].c + d[ k ]. c;
				 
					 
					 
					 nrsol++;
					 sol[ nrsol ] = ( d[ i ].xf - 1 ) + ( d[ i ].yf - 1 ) +      ab( d[ i ].x - d[ j ].x ) + ab( d[ i ].y - d[ j ].y ) +     ab( d[ j ].xf - d[ k ].x ) + ab( d[ j ].yf - d[ k ]. y  ) +     ab( d[ k ].xf - n ) + ab( d[ k ].yf - m )     + d[ i ].c + d[ j ].c + d[ k ]. c;    
					 
					 nrsol++;
					 sol[ nrsol ] = ( d[ i ].xf - 1 ) + ( d[ i ].yf - 1 ) +      ab( d[ i ].x - d[ j ].x ) + ab( d[ i ].y - d[ j ].y ) +     ab( d[ j ].xf - d[ k ].xf ) + ab( d[ j ].yf - d[ k ]. yf ) +      ab( d[ k ].x - n ) +  ab( d[ k ].y - m )     + d[ i ].c + d[ j ].c + d[ k ]. c; 
					 
					 nrsol++;
					 sol[ nrsol ] = ( d[ i ].xf - 1 ) + ( d[ i ].yf - 1 ) +      ab( d[ i ].x - d[ j ].xf ) + ab( d[ i ].y - d[ j ].yf ) +     ab( d[ j ].x - d[ k ].x ) + ab( d[ j ].y - d[ k ]. y  ) +     ab( d[ k ].xf - n ) + ab( d[ k ].yf - m )     + d[ i ].c + d[ j ].c + d[ k ]. c;
					 
					 nrsol++;
					 sol[ nrsol ] = ( d[ i ].xf - 1 ) + ( d[ i ].yf - 1 ) +      ab( d[ i ].x - d[ j ].xf ) + ab( d[ i ].y - d[ j ].yf ) +     ab( d[ j ].x - d[ k ].xf ) + ab( d[ j ].y - d[ k ]. yf ) +      ab( d[ k ].x - n ) +  ab( d[ k ].y - m )     + d[ i ].c + d[ j ].c + d[ k ]. c;
				 }
				 
				 afisare();
	 
	 //for ( i = 1 ; i <= nrsol ; i++ )
		// g << sol[ i ] << "\n";
 
}

void afisare()
{
	int i;
	minim = 999999999;
	
	for ( i = 1 ; i < nrsol ; i++ )
		if( minim > sol[ i ] )
			minim = sol[ i ];
		
		g << minim << "\n";
	
}

void citire()
{
 int i, j;
 f >> t;
 for ( i = 1 ; i <= t ; i++ )
 {
	 f >> n >> m;
	 for ( j = 1 ; j <= 3 ; j++ )
		 f >> d[ j ].x >> d[ j ].y >> d[ j ].xf >> d[ j ].yf >> d[ j ].c;
	 rezolva();
 }
}

int main()
{
 citire();
 //afisare();
 return 0;
}