Cod sursa(job #1564362)

Utilizator hrazvanHarsan Razvan hrazvan Data 9 ianuarie 2016 17:19:01
Problema Portal3 Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>
long long xk1[3], yk1[3], xk2[3], yk2[3], c[3], dist[3];

inline int myabs(int x){
  return x < 0 ? -x : x;
}

int main(){
  FILE *in = fopen("portal3.in", "r");
  FILE *out = fopen("portal3.out", "w");
  long long t, n, m, i, j, x, k, rez;
  fscanf(in, "%lld", &t);
  for(; t > 0; t--){
    fscanf(in, "%lld%lld", &n, &m);
    for(i = 0; i < 3; i++){
      fscanf(in, "%lld%lld%lld%lld%lld", &xk1[i], &yk1[i], &xk2[i], &yk2[i], &c[i]);
      dist[i] = xk1[i] + yk1[i];
    }
    rez = n + m;
    for(k = 0; k < 9; k++){
      for(i = 0; i < 3; i++){
        for(j = 0; j < 3; j++){
          x = dist[i] + c[i] + myabs(xk2[i] - xk1[j]) + myabs(yk2[i] - yk1[j]);
          if(x < dist[j])
            dist[j] = x;
        }
        x = n - xk2[i] + m - yk2[i] + c[i] + dist[i];
        if(rez > x)
          rez = x;
      }
    }
    fprintf(out, "%lld\n", rez);
  }
  fclose(in);
  fclose(out);
  return 0;
}