Cod sursa(job #1668132)

Utilizator ris99Istrate Ruxandra ris99 Data 29 martie 2016 16:21:39
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <fstream>

using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
struct punct
{ long long x,y;

}p1,p2,q1,q2,m1,m2;
long long ar,per;
void intersectie(punct p1,punct p2,punct q1,punct q2,punct &r1,punct &r2 )
{ r1.x=max(p1.x,q1.x);
  r1.y=max(p1.y,q1.y);
  r2.x=min(p2.x,q2.x);
  r2.y=min(p2.y,q2.y);
}
int verif(punct r1,punct r2)
{ if(r1.x<=r2.x&&r1.y<=r2.y) return 1;
  return 0;

}
long long arie(punct p1,punct p2)
{ return(p2.x-p1.x)*(p2.y-p1.y);

}
long long  perim(punct p1,punct p2)
{
    return  2*(p2.x-p1.x)+2*(p2.y-p1.y);
}
int main()
{ punct r1,r2,t1,t2,v1,v2,n1,n2;
    f>>p1.x>>p1.y>>p2.x>>p2.y>>q1.x>>q1.y>>q2.x>>q2.y>>m1.x>>m1.y>>m2.x>>m2.y;
  ar=arie(p1,p2)+arie(q1,q2)+arie(m1,m2);
  per=perim(p1,p2)+perim(q1,q2)+perim(m1,m2);
  intersectie(p1,p2,q1,q2,r1,r2);
  if(verif(r1,r2)) {ar=ar-arie(r1,r2); per=per-perim(r1,r2);}
  intersectie(p1,p2,m1,m2,t1,t2);
  if(verif(t1,t2)) {ar=ar-arie(t1,t2); per=per-perim(t1,t2);}
  intersectie(m1,m2,q1,q2,v1,v2);
  if(verif(v1,v2)) {ar=ar-arie(v1,v2); per=per-perim(v1,v2);}
  intersectie(p1,p2,v1,v2,n1,n2);
  if(verif(n1,n2)) {ar=ar+arie(n1,n2); per=per+perim(n1,n2);}
  g<<ar<<' '<<per;
    return 0;
}