Cod sursa(job #2700509)

Utilizator VladMxPMihaila Vlad VladMxP Data 27 ianuarie 2021 21:51:10
Problema Reuniune Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <iostream>
#include <fstream>
#define ll long long

using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
ll x[5][5],y[5][5];
ll p,a;

ll aria(ll a,ll b,ll c,ll d)
{
    if(a>c||b>d)
    {
        fout<<"0 0";
        exit(0);
    }
    return (c-a)*(d-b);
}

ll perim(ll a,ll b,ll c,ll d)
{
    if(a>c||b>d)
    {
        fout<<"0 0";
        exit(0);
    }
    return (c-a)*2+(d-b)*2;
}

int main()
{
    for(int i=1;i<=3;i++)
    {
        fin>>x[i][1]>>y[i][1]>>x[i][2]>>y[i][2];
        p+=perim(x[i][1],y[i][1],x[i][2],y[i][2]);
        a+=aria(x[i][1],y[i][1],x[i][2],y[i][2]);
    }
    for(int i=1;i<3;i++)
    {
        for(int j=i+1;j<=3;j++)
        {
            p-=perim(max(x[i][1],x[j][1]),max(y[i][1],y[j][1]),min(x[i][2],x[j][2]),min(y[i][2],y[j][2]));
            a-=aria(max(x[i][1],x[j][1]),max(y[i][1],y[j][1]),min(x[i][2],x[j][2]),min(y[i][2],y[j][2]));
        }
    }
    p+=perim(max(x[1][1],max(x[2][1],x[3][1])),max(y[1][1],max(y[2][1],y[3][1])),min(x[1][2],min(x[2][2],x[3][2])),min(y[1][2],min(y[2][2],y[3][2])));
    a+=aria(max(x[1][1],max(x[2][1],x[3][1])),max(y[1][1],max(y[2][1],y[3][1])),min(x[1][2],min(x[2][2],x[3][2])),min(y[1][2],min(y[2][2],y[3][2])));
    fout<<a<<" "<<p;
}