Cod sursa(job #1691077)

Utilizator Daria09Florea Daria Daria09 Data 16 aprilie 2016 19:51:59
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
struct dreptunghi
{
    int x1,x2,y1,y2;
}; dreptunghi a1,a2,a3,b1,b2,b3,b;
long long arie(dreptunghi d)
{
    return ((long long)d.x2-d.x1)*(d.y2-d.y1);
}
long long perimetru(dreptunghi d)
{
    return (((long long)d.x2-d.x1)+(d.y2-d.y1))<<1;
}
dreptunghi intersectie(dreptunghi x,dreptunghi y)
{
    dreptunghi z;
    z.x1=max(x.x1,y.x1);
    z.x2=min(x.x2,y.x2);
    z.y1=max(x.y1,y.y1);
    z.y2=min(x.y2,y.y2);
    if(z.x2<z.x1||z.y2<z.y1)z.x1=z.x2=z.y1=z.y2=0;
    return z;
}
int main()
{
    f>>a1.x1>>a1.y1>>a1.x2>>a1.y2>>a2.x1>>a2.y1>>a2.x2>>a2.y2>>a3.x1>>a3.y1>>a3.x2>>a3.y2;
    b1=intersectie(a1,a2);
    b2=intersectie(a2,a3);
    b3=intersectie(a3,a1);
    b=intersectie(b1,a3);
    long long arietotala,perimetrutotal;
    arietotala=arie(a1)+arie(a2)+arie(a3)+arie(b)-(arie(b1)+arie(b2)+arie(b3));
    perimetrutotal=perimetru(a1)+perimetru(a2)+perimetru(a3)+perimetru(b)-(perimetru(b1)+perimetru(b2)+perimetru(b3));
    g<<arietotala<<" "<<perimetrutotal;
    return 0;
}