Cod sursa(job #636122)

Utilizator VmanDuta Vlad Vman Data 19 noiembrie 2011 17:12:49
Problema Portal3 Scor 0
Compilator cpp Status done
Runda .com 2011 Marime 1.71 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int N, M, T, X1, X2, X3, Y1, Y2, Y3, X4, Y4, X5, Y5, X6, Y6, C1, C2, C3;
int i, P[6], x, y;
long long best, R;

inline int modul(int a) { return a>0?a:-a; }

int main()
{
    freopen("portal3.in","r",stdin);
    freopen("portal3.out","w",stdout);
    
    scanf("%d", &T);
    while (T--)
    {
          scanf("%d %d", &N, &M);
          scanf("%d %d %d %d %d", &X1, &Y1, &X2, &Y2, &C1);
          scanf("%d %d %d %d %d", &X3, &Y3, &X4, &Y4, &C2);
          scanf("%d %d %d %d %d", &X5, &Y5, &X6, &Y6, &C3);
          
          for (i=1; i<=5; ++i)
              P[i] = i;
          best = C1+C2+C3+N+M;

          do
          {
              R = 0; 
              x = y = 0;
              for (i=2; i<=5; ++i)
              {
                  switch (P[i])
                  {
                   case 2:
                        R += modul(x-X1) + modul(y-Y1) + C1;
                        x = X2; y = Y2;
                        break;
                   case 3:
                        R += modul(x-X3) + modul(y-Y3) + C2;
                        x = X4; y = Y4;
                        break;
                   case 4:
                        R += modul(x-X5) + modul(y-Y5) + C3;
                        x = X6; y = Y6;
                        break;
                   case 5:
                        R += modul(x-N) + modul(y-M);
                        i = 6;
                        break;
                   }
              }                               
              if (R < best) best = R;
          }
          while (next_permutation(P+2, P+6));
    }
    
    printf("%lld\n", best);
    
    return 0;
}