Cod sursa(job #2458822)

Utilizator ciutanpCiuta Andrei Calin ciutanp Data 21 septembrie 2019 16:14:02
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.35 kb
#include<bits/stdc++.h>
#define NAX 200005
using namespace std;
using ll = long long;
const int INF = 1e9 + 5;
void self_max(ll &a, ll b)
{
    a = max(a, b);
}
void self_min(int &a, int b)
{
    a = min(a, b);
}

ifstream f("reuniune.in");
ofstream g("reuniune.out");

struct dr
{
    ll x, y, x1, y1, arie, peri;
}v[ 7 ];

void calc(int i)
{
    if( v[ i ].x > v[ i ].x1 || v[ i ].y > v[ i ].y1)
        return;
    v[ i ].arie = abs( v[ i ].x - v[ i ].x1 ) * abs( v[ i ].y - v[ i ].y1);
    v[ i ].peri = 2 * (abs( v[ i ].x - v[ i ].x1 ) +  abs( v[ i ].y - v[ i ].y1));
}

void citeste(int i)
{
    f >> v[ i ].x >> v[ i ].y >> v[ i ].x1 >> v[ i ].y1;
    calc( i );
}

void inter(int i, int j, int k)
{
    v[ k ].x = max( v[ i ].x, v[ j ].x);
    v[ k ].y = max( v[ i ].y, v[ j ].y);
    v[ k ].x1 = min( v[ i ].x1, v[ j ].x1);
    v[ k ].y1 = min( v[ i ].y1, v[ j ].y1);
    calc( k );
}

int main()
{
    ios_base::sync_with_stdio(0);
    f.tie(0);

    for(int i = 0 ; i < 3 ; ++i)
        citeste( i );

    inter(0, 1, 3);
    inter(0, 2, 4);
    inter(1, 2, 5);
    inter(3, 5, 6);
    g << v[ 1 ].arie + v[ 2 ].arie - v[ 3 ].arie + v[ 0 ].arie - v[ 4 ].arie - v[ 5 ].arie + v[ 6 ].arie << ' ' << v[ 1 ].peri + v[ 2 ].peri - v[ 3 ].peri + v[ 0 ].peri - v[ 4 ].peri - v[ 5 ].peri + v[ 6 ].peri;

    return 0;
}