Cod sursa(job #1753688)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 6 septembrie 2016 22:43:55
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>
using namespace std;

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

struct str{ int x1, y1, x2, y2; } r1, r2, r3;

long long a( str r ) { return     (r.x2 - r.x1) * 1LL * (r.y2 - r.y1); }
long long p( str r ) { return 2LL * ( (r.x2 - r.x1) + (r.y2 - r.y1) ); }

str i( str r1, str r2 ) {
    str r = { max( r1.x1, r2.x1 ), max( r1.y1, r2.y1 ),
              min( r1.x2, r2.x2 ), min( r1.y2, r2.y2 ) };

    if( r.x1 > r.x2 || r.y1 > r.y2 )
        r = { 0, 0, 0, 0 };

    return r;
}

int main( void ) {

    in >> r1.x1 >> r1.y1 >> r1.x2 >> r1.y2;
    in >> r2.x1 >> r2.y1 >> r2.x2 >> r2.y2;
    in >> r3.x1 >> r3.y1 >> r3.x2 >> r3.y2;

    out << a(r1) + a(r2) + a(r3) - a( i(r1, r2) ) - a( i(r1, r3) ) - a( i(r2, r3) ) + a( i( r1, i(r2, r3) ) ) <<  " ";
    out << p(r1) + p(r2) + p(r3) - p( i(r1, r2) ) - p( i(r1, r3) ) - p( i(r2, r3) ) + p( i( r1, i(r2, r3) ) ) << "\n";

    return 0;
}