Cod sursa(job #2437227)

Utilizator PatrickCplusplusPatrick Kristian Ondreovici PatrickCplusplus Data 8 iulie 2019 21:28:27
Problema Reuniune Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.59 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("reuniune.in");
ofstream fout("reuniune.out");

struct dreptunghi
{
    long long x,y,x2,y2;
}d1, d2, d3, d12, d13, d23, d123;

bool Inside(long long x, long long y, dreptunghi a)
{
    return x >= a.x && x <= a.x2 && y >= a.y && y <= a.y2;
}

dreptunghi Intersection(dreptunghi a, dreptunghi b)
{
    dreptunghi p = {0, 0, 0, 0};
    if (Inside(a.x, a.y, b) || Inside(a.x2, a.y2, b) || Inside(b.x, b.y, a) || Inside(b.x2, b.y2, a))
    {
        int max1 = -1000000001;
        int max2 = -1000000001;
        int min1 = 1000000001;
        int min2 = 1000000001;
        max1 = max(a.x, b.x);
        max2 = max(a.y, b.y);
        min1 = min(a.x2, b.x2);
        min2 = min(a.y2, b.y2);
        p = {max1, max2, min1, min2};
    }
    return p;
}

int main()
{
    fin >> d1.x >> d1.y >> d1.x2 >> d1.y2;
    fin >> d2.x >> d2.y >> d2.x2 >> d2.y2;
    fin >> d3.x >> d3.y >> d3.x2 >> d3.y2;
    d12 = Intersection(d1, d2);
    d13 = Intersection(d1, d3);
    d23 = Intersection(d2, d3);
    d123 = Intersection(d12, d3);
    fout << 1LL * (d1.x2-d1.x)*(d1.y2-d1.y)+(d2.x2-d2.x)*(d2.y2-d2.y)+(d3.x2-d3.x)*(d3.y2-d3.y)-(d12.x2-d12.x)*(d12.y2-d12.y)-(d13.x2-d13.x)*(d13.y2-d13.y)-(d23.x2-d23.x)*(d23.y2-d23.y)+(d123.x2-d123.x)*(d123.y2-d123.y) << " ";
    fout << 1LL * (d1.x2-d1.x+d1.y2-d1.y)*2+(d2.x2-d2.x+d2.y2-d2.y)*2+(d3.x2-d3.x+d3.y2-d3.y)*2-(d12.x2-d12.x+d12.y2-d12.y)*2-(d13.x2-d13.x+d13.y2-d13.y)*2-(d23.x2-d23.x+d23.y2-d23.y)*2+(d123.x2-d123.x+d123.y2-d123.y)*2;
    fin.close();
    fout.close();
    return 0;
}