Cod sursa(job #940063)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 15 aprilie 2013 16:03:29
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
const int n=3;
int i, v[6];

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

int aria(){
    int 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+=(v[i+1]-v[i])*(u-p);
    }
    return arie;
}

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

int perimetru2(){
    int 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+=(v[i+1]-v[i])*2;
    return peri;
}

int main(){
    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);
    g<<aria()<<' ';
    int x=perimetru1();
    x+=perimetru2();
    g<<x<<"\n";
    return 0;
}