Cod sursa(job #639038)

Utilizator dicu_dariaDaria Dicu dicu_daria Data 22 noiembrie 2011 10:47:20
Problema Portal3 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
using namespace std;
long long mod(long long a)
{
   return((a<0)?(-a):a);
}
bool used[5];
long long n,m,x[8],y[8],c[5],maxim;
void back(int a,long long s)
{
   for(int i=1;i<=3;i++)
   if(!used[i])
   {
      used[i]=1;
      back(2*i-1,s+mod(x[a]-x[2*i])+mod(y[a]-y[2*i])+c[i]);
      back(2*i,s+mod(x[a]-x[2*i-1])+mod(y[a]-y[2*i-1])+c[i]);
      used[i]=0;
   }
   if(s+mod(n-x[a])+mod(m-y[a])<maxim) maxim=s+mod(n-x[a])+mod(m-y[a]);
}
int main()
{
   int t;
   ifstream fi("portal3.in");
   ofstream fo("portal3.out");
   fi>>t;
   for(;t>0;t--)
   {
      fi>>n>>m;
      maxim=n+m;
      x[0]=y[0]=0;
      fi>>x[1]>>y[1]>>x[2]>>y[2]>>c[1];
      fi>>x[3]>>y[3]>>x[4]>>y[4]>>c[2];
      fi>>x[5]>>y[5]>>x[6]>>y[6]>>c[3];
      back(0,0);
      fo<<maxim<<"\n";
   }
}