Cod sursa(job #1750407)

Utilizator nurof3nCioc Alex-Andrei nurof3n Data 30 august 2016 10:15:37
Problema Reuniune Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
struct drept{int x0;int x1;int y0;int y1;}v[4];
long long int A,P;
inline long long int arie(int i)
{
    return 1LL*(v[i].x1-v[i].x0)*(v[i].y1-v[i].y0);
}
inline long long int perimetru(int i)
{
    return 2LL*(v[i].x1-v[i].x0+v[i].y1-v[i].y0);
}
int intersectie(int i,int j)
{
    v[0].x0=max(v[i].x0,v[j].x0),v[0].x1=min(v[i].x1,v[j].x1);
    if(v[0].x0>=v[0].x1) return 0;
    v[0].y0=max(v[i].y0,v[j].y0),v[0].y1=min(v[i].y1,v[j].y1);
    if(v[0].y0>=v[0].y1) return 0;
    return 1;
}
int main()
{
    for(int i=1;i<=3;i++)
    {
        f>>v[i].x0>>v[i].y0>>v[i].x1>>v[i].y1;
        A+=arie(i);
        P+=perimetru(i);
    }
    A-=intersectie(1,2)*arie(0);
    A-=intersectie(1,3)*arie(0);
    A-=intersectie(2,3)*arie(0);
    A+=intersectie(0,1)*arie(0);

    P-=intersectie(1,2)*perimetru(0);
    P-=intersectie(1,3)*perimetru(0);
    P-=intersectie(2,3)*perimetru(0);
    P+=intersectie(0,1)*perimetru(0);
    g<<A<<' '<<P;
    return 0;
}