Cod sursa(job #2386630)

Utilizator IoanMihaiIoan Mihai IoanMihai Data 23 martie 2019 12:19:44
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.35 kb
#include<bits/stdc++.h>
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
#define f first
#define s second
struct interval{
  long long x1;
  long long y1;
  long long x2;
  long long y2;
};
interval a[3];
int n,m;
long long arie_sol,perimetru_sol;
long long arie(interval d)
{
  return (d.y2-d.y1)*(d.x2-d.x1);
}
long long perimetru(interval d)
{
  return 2*(d.y2-d.y1+d.x2-d.x1);
}
interval intersectie(interval x,interval y)
{
  interval solutie;
  solutie.x1=max(x.x1,y.x1);
  solutie.y1=max(x.y1,y.y1);
  solutie.x2=min(x.x2,y.x2);
  solutie.y2=min(x.y2,y.y2);
  if (solutie.x1>solutie.x2 || solutie.y1>solutie.y2)
   solutie.x1=solutie.x2=solutie.y1=solutie.y2=0;
   return solutie;
}
int main()
{
  for (int i=0;i<3;i++)
   {
     fin>>a[i].x1>>a[i].y1>>a[i].x2>>a[i].y2;
   }
  arie_sol=arie(a[0])+arie(a[1])+arie(a[2])-
          arie(intersectie(a[0],a[1]))-
          arie(intersectie(a[0],a[2]))-
          arie(intersectie(a[1],a[2]))+
          arie(intersectie(intersectie(a[0],a[1]),a[2]));
  perimetru_sol=perimetru(a[0])+perimetru(a[1])+perimetru(a[2])-
                perimetru(intersectie(a[0],a[1]))-
                perimetru(intersectie(a[0],a[2]))-
                perimetru(intersectie(a[1],a[2]))+
                perimetru(intersectie(intersectie(a[0],a[1]),a[2]));
    fout<<arie_sol<<" "<<perimetru_sol<<'\n';
  return 0;
}