Cod sursa(job #1497658)

Utilizator TarabanDragosTaraban Dragos-Petru TarabanDragos Data 7 octombrie 2015 04:00:14
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<cstdio>
struct dr{
    long long x1;
    long long x2;
    long long y1;
    long long y2;
}a,b,c,ab,ac,bc,x;
FILE *f,*g;
long long maxim(long long a,long long b){
    if(a>b)
        return a;
    return b;
}
long long minim(long long a,long long b){
    if(a<b)
        return a;
    return b;
}
void ints(dr a,dr b,dr &c){
    c.x1=maxim(a.x1,b.x1);
    c.x2=minim(a.x2,b.x2);
    c.y1=maxim(a.y1,b.y1);
    c.y2=minim(a.y2,b.y2);
    if(c.x1>c.x2||c.y1>c.y2){
        c.x1=c.x2=c.y1=c.y2=0;
    }
}
long long ar(dr a){
    return (a.x2-a.x1)*(a.y2-a.y1);
}
long long per(dr a){
    return 2*((a.x2-a.x1)+(a.y2-a.y1));
}
int main(){
    f=fopen("reuniune.in","r");
    g=fopen("reuniune.out","w");
    fscanf(f,"%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld",&a.x1,&a.y1,&a.x2,&a.y2,&b.x1,&b.y1,&b.x2,&b.y2,&c.x1,&c.y1,&c.x2,&c.y2);
    ints(a,b,ab);
    ints(a,c,ac);
    ints(b,c,bc);
    ints(ab,c,x);
    fprintf(g,"%lld %lld",ar(a)+ar(b)+ar(c)-ar(ab)-ar(ac)-ar(bc)+ar(x),per(a)+per(b)+per(c)-per(ab)-per(ac)-per(bc)+per(x));
    fclose(f);
    fclose(g);
    return 0;
}