Cod sursa(job #1854049)

Utilizator andrei_diaconu11Andrei C. Diaconu andrei_diaconu11 Data 22 ianuarie 2017 12:51:20
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fi("reuniune.in");
ofstream fo("reuniune.out");
long long d[3][4];

int main()
{
  long long i, j, A, P, colmin, colmax, linmin, linmax, L, l;
  for(i=0;i<3;i++)
    for(j=0;j<4;j++)
      fi>>d[i][j];
  A=P=0;
  for(i=0;i<3;i++){
    L=d[i][2]-d[i][0];
    l=d[i][3]-d[i][1];
    P+=2*(L+l);
    A+=L*l;
  }
  for(i=0;i<3;i++)
    for(j=i+1;j<3;j++){
      colmin=max(d[i][1],d[j][1]);
      linmin=max(d[i][0],d[j][0]);
      colmax=min(d[i][3],d[j][3]);
      linmax=min(d[i][2],d[j][2]);
      if(linmax-linmin>0 && colmax-colmin>0)
        A-=(linmax-linmin)*(colmax-colmin);
      if(linmax-linmin>=0 && colmax-colmin>=0)
        P-=2*(linmax-linmin+colmax-colmin);
    }
  if(linmax-linmin>0 && colmax-colmin>0){
    colmin=max(d[0][1],colmin);
    colmax=min(d[0][3],colmax);
    linmin=max(d[0][0],linmin);
    linmax=min(d[0][2],linmax);
    if(linmax-linmin>0 && colmax-colmin>0)
      A+=(linmax-linmin)*(colmax-colmin);
    if(linmax-linmin>=0 && colmax-colmin>=0)
      P+=2*(linmax-linmin+colmax-colmin);
  }
  fo<<A<<' '<<P;
  return 0;
}