Cod sursa(job #1956929)

Utilizator mariastStoichitescu Maria mariast Data 7 aprilie 2017 10:14:41
Problema Reuniune Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f ("reuniune.in");
ofstream g ("reuniune.out");
long long ar,a[10],b[10],c[10],x,y,z,t,p,d[10];
long long arie(long long x,long long y, long long z,long long t){
    if(z>x&&t>y)return 1LL*(z-x)*(t-y);
    return 0;
}
void cintersectie(long long a[5],long long b[5],long long d[4]){
    d[1]=max(b[1],a[1]);
    d[2]=max(b[2],a[2]);
    d[3]=min(b[3],a[3]);
    d[4]=min(b[4],a[4]);
}
long long perimetru(long long x,long long y, long long z,long long t){
    if(z>=x&&t>=y)return 1LL*((z-x)+(t-y))*2;
    return 0;
}
int main()
{
    f>>a[1]>>a[2]>>a[3]>>a[4];
    f>>b[1]>>b[2]>>b[3]>>b[4];
    f>>c[1]>>c[2]>>c[3]>>c[4];
    ar=arie(a[1],a[2],a[3],a[4])+arie(b[1],b[2],b[3],b[4])+arie(c[1],c[2],c[3],c[4]);
    p=perimetru(a[1],a[2],a[3],a[4])+perimetru(b[1],b[2],b[3],b[4])+perimetru(c[1],c[2],c[3],c[4]);
    cintersectie(a,b,d);
    ar-=arie(d[1],d[2],d[3],d[4]);
    p-=perimetru(d[1],d[2],d[3],d[4]);
    cintersectie(a,c,d);
    ar-=arie(d[1],d[2],d[3],d[4]);
    p-=perimetru(d[1],d[2],d[3],d[4]);
    cintersectie(b,c,d);
    ar-=arie(d[1],d[2],d[3],d[4]);
    p-=perimetru(d[1],d[2],d[3],d[4]);
    cintersectie(d,c,d);
    ar+=arie(d[1],d[2],d[3],d[4]);
//    p+=perimetru(d[1],d[2],d[3],d[4]);
    g<<ar<<" "<<p;

}