Cod sursa(job #469176)

Utilizator andra23Laura Draghici andra23 Data 6 iulie 2010 18:50:43
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.51 kb
#include<fstream.h>
#include<iostream.h>

class drept{
    public: int x0, y0, x1, y1;
    drept() {}
    drept(int a, int b, int c, int d){
        x0 = a;
        y0 = b;
        x1 = c;
        y1 = d;  
    }   
};

int min(int a, int b){
    if (a < b)
        return a;
    else return b;
}

int max(int a, int b){
    if (a > b)
        return a;
    else return b;
}

int arie(drept d){
    return ((d.x1-d.x0) * (d.y1-d.y0));    
}

drept sup(drept d1, drept d2){
    if (d1.x1 < d2.x0 || d1.y1 < d2.y0 || d2.x1 < d1.x0 || d2.y1 < d1.y0)
        return drept(0, 0, 0, 0);
    else 
        return drept(max(d1.x0, d2.x0), max(d1.y0, d2.y0), min(d1.x1, d2.x1), min(d1.y1, d2.y1));
        
}

int per(drept d){
    if (d.x1 == d.x0)
        return d.y1 - d.y0;
    else
        if (d.y1 == d.y0)
            return d.x1 - d.x0;
        else 
            return 2*((d.x1 - d.x0) + (d.y1 - d.y0));
              
}



int main(){
    drept v[3]; 
    int i, a, b, c, d;
    ifstream f("reuniune.in");
    ofstream g("reuniune.out");
    for (i = 0; i < 3; i++){
        f>>a>>b>>c>>d;
        v[i]=drept(a, b, c, d);
    }
    int ar = arie(v[0]) + arie(v[1]) +arie(v[2]) - arie(sup(v[0], v[1])) - arie(sup(v[0], v[2])) - arie(sup(v[2], v[1])) + arie(sup(sup(v[0], v[1]), v[2])); 
    int p = per(v[0]) + per(v[1]) + per(v[2]) - per(sup(v[0], v[1])) - per(sup(v[0], v[2])) - per(sup(v[2], v[1])) + per(sup(sup(v[0], v[1]), v[2])); 
   
    g<<ar<<" "<<p;  
    return 0;
}