Cod sursa(job #2220709)

Utilizator cristibogdanPatrascu Cristian cristibogdan Data 12 iulie 2018 13:22:11
Problema Reuniune Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>

using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
long long xs,xd,ys,yj,solA,solP;
int i,ok,j;
struct du{
    long long x1,x2,y1,y2;}dr[4];
int main()
{
    for(i=1;i<=3;i++){
        f>>dr[i].x1>>dr[i].y1>>dr[i].x2>>dr[i].y2;
        solA+=(dr[i].x2-dr[i].x1)*(dr[i].y2-dr[i].y1);
        solP+=2*((dr[i].x2-dr[i].x1)+(dr[i].y2-dr[i].y1));
    }
    ok=0;
    for(i=1;i<=3;i++)
        for(j=i+1;j<=3;j++)
        {
            xs=max(dr[i].x1,dr[j].x1);
            xd=min(dr[i].x2,dr[j].x2);
            yj=max(dr[i].y1,dr[j].y1);
            ys=min(dr[i].y2,dr[j].y2);
            if(xs<xd&&ys>yj){
                solA-=(xd-xs)*(ys-yj);
                solP-=2*((xd-xs)+(ys-yj));
            }
            else
                ok=1;
        }
     if(ok==0){
        xs=max(dr[1].x1,max(dr[2].x1,dr[3].x1));
        xd=min(dr[1].x2,min(dr[2].x2,dr[3].x2));
        yj=max(dr[1].y1,max(dr[2].y1,dr[3].y1));
        ys=min(dr[1].y2,min(dr[2].y2,dr[3].y2));
        if(xs<xd&&ys>yj)
            solA+=(xd-xs)*(ys-yj);
            solP+=2*((xd-xs)+(ys-yj));
     }
     g<<solA<<" "<<solP;;
    return 0;
}