Cod sursa(job #1388123)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 15 martie 2015 10:48:07
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <fstream>
#include <cstdio>
#include <algorithm>
using namespace std;
ifstream f("reuniune.in");
const long long n=3;
long long i, v[6];

struct dreptunghi{
    long long x, X, y, Y;
} a[4];

long long aria(){
    long long arie=0, p, u, i, j;
    for(i=1; i<n*2; i++)
    {
        p=1000000010;
        u=-1000000010;
        for(j=1; j<=n; j++)
            if(a[j].x<=v[i] && a[j].X>=v[i+1])
            {
                if(p>a[j].y)
                    p=a[j].y;
                if(u<a[j].Y)
                    u=a[j].Y;
            }
        arie+=1LL*(v[i+1]-v[i])*(u-p);
    }
    return arie;
}

long long perimetru1(){
    long long peri=0, i;
    for(i=1; i<n*2; i++)
        peri+=2*(v[i+1]-v[i]);
    return peri;
}

long long perimetru2(){
    long long peri=0, i;
    for(i=1; i<=n; i++)
    {
        v[i*2-1]=a[i].y;
        v[i*2]=a[i].Y;
    }
    sort(v+1, v+7);
    for(i=1; i<n*2; i++)
        peri+=2*(v[i+1]-v[i]);
    return peri;
}

int main(){
    freopen("reuniune.out", "w", stdout);
    for(i=1; i<=n; i++)
    {
        f>>a[i].x>>a[i].y>>a[i].X>>a[i].Y;
        v[i*2-1]=a[i].x;
        v[i*2]=a[i].X;
    }
    sort(v+1, v+7);
    printf("%lld", aria());
    printf(" %lld\n", perimetru1()+perimetru2());
    return 0;
}