Cod sursa(job #3233571)

Utilizator Dragos__1_1Dragos Antohi Dragos__1_1 Data 3 iunie 2024 20:40:17
Problema Reuniune Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
struct dr{
    int X1,X2;
    int Y1,Y2;
}V[11];
int n,i,pr,ar,aria,peri,j,nr;
ll arie (dr A)
{   if (A.X1<=A.X2&&A.Y1<=A.Y2)return (A.X2-A.X1)*(A.Y2-A.Y1);
    return 0;
}
ll per (dr A)
{   if (A.X1<=A.X2&&A.Y1<=A.Y2)return (A.X2-A.X1)*2+(A.Y2-A.Y1)*2;
}

dr inter (dr A,dr B)
{   dr C;
    C.X1=max(A.X1,B.X1);
    C.X2=min(A.X2,B.X2);
    C.Y1=max(A.Y1,B.Y1);
    C.Y2=min(A.Y2,B.Y2);
    return C;
}

int main()
{   n=3;
    for (i=1;i<=n;i++)
        f>>V[i].X1>>V[i].Y1>>V[i].X2>>V[i].Y2;
    for (i=1;i<(1<<n);i++)
    {   nr=0;

        dr D;
        for (j=0;j<n;j++)
            if (i&(1<<j))
            {   nr++;
                if(nr==1)D=V[j+1];
                else D=inter(D,V[j+1]);
            }
        if (nr&1){ aria+=arie(D);peri+=per(D);}
        else {aria-=arie(D);peri-=per(D);}
    }
    g<<aria<<" "<<peri<<'\n';
    return 0;
}