Cod sursa(job #1221902)

Utilizator sebinechitasebi nechita sebinechita Data 21 august 2014 17:39:11
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.66 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");

long long arie(int x1, int y1, int x2, int y2)
{
    if(x1>x2 || y1>y2)
        return 0;
    return (x2-x1)*(y2-y1);
}

long long per(int x1, int y1, int x2, int y2)
{
    if(x1>x2 || y1>y2)
        return 0;
    return 2*(x2-x1)+2*(y2-y1);
}

int x1[4], x2[4], y1[4], y2[4];
long long a, p;
int main()
{
    fin>>x1[1]>>y1[1]>>x2[1]>>y2[1];
    fin>>x1[2]>>y1[2]>>x2[2]>>y2[2];
    fin>>x1[3]>>y1[3]>>x2[3]>>y2[3];
    a=
        arie(x1[1], y1[1], x2[1], y2[1]) +
        arie(x1[2], y1[2], x2[2], y2[2]) +
        arie(x1[3], y1[3], x2[3], y2[3]) -
        arie(max(x1[1], x1[2]), max(y1[1], y1[2]), min(x2[1], x2[2]), min(y2[1], y2[2])) -
        arie(max(x1[3], x1[2]), max(y1[3], y1[2]), min(x2[3], x2[2]), min(y2[3], y2[2])) -
        arie(max(x1[1], x1[3]), max(y1[1], y1[3]), min(x2[1], x2[3]), min(y2[1], y2[3])) +
        arie(max(max(x1[1], x1[2]), x1[3]), max(max(y1[1], y1[2]), y1[3]), min(x2[3], min(x2[1], x2[2])), min(y2[3], min(y2[1], y2[2])));
    p=
        per(x1[1], y1[1], x2[1], y2[1]) +
        per(x1[2], y1[2], x2[2], y2[2]) +
        per(x1[3], y1[3], x2[3], y2[3]) -
        per(max(x1[1], x1[2]), max(y1[1], y1[2]), min(x2[1], x2[2]), min(y2[1], y2[2])) -
        per(max(x1[3], x1[2]), max(y1[3], y1[2]), min(x2[3], x2[2]), min(y2[3], y2[2])) -
        per(max(x1[1], x1[3]), max(y1[1], y1[3]), min(x2[1], x2[3]), min(y2[1], y2[3])) +
        per(max(max(x1[1], x1[2]), x1[3]), max(max(y1[1], y1[2]), y1[3]), min(x2[3], min(x2[1], x2[2])), min(y2[3], min(y2[1], y2[2])));
    fout<<a<<" "<<p<<"\n";
}