Cod sursa(job #2701144)

Utilizator rareshinnhoMiroiu Rares rareshinnho Data 29 ianuarie 2021 22:23:27
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <bits/stdc++.h>
#define ll long long

using namespace std;
ifstream f("reuniune.in");
ofstream g("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)
    {
        return 0LL;
    }
    return (c-a)*(d-b);
}

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

int main()
{
    for(int i=1;i<=3;i++)
    {
        f>>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])));
    g<<a<<" "<<p;
}