Cod sursa(job #2784979)

Utilizator enedumitruene dumitru enedumitru Data 17 octombrie 2021 19:32:38
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<fstream>
using namespace std;
ifstream f("reuniune.in"); ofstream g("reuniune.out");
typedef long long ll;
struct drept {int x0,y0,x1,y1;} d[4];
ll ar(drept p)
{   return 1LL*(p.x1-p.x0)*(p.y1-p.y0);}
ll per(drept p)
{   return 2LL*(p.x1-p.x0+p.y1-p.y0);}
int vmax(int x, int y)
{   if(x<y) return y; else return x;}
int vmin(int x, int y)
{   if(x<y) return x; else return y;}
drept idr(drept a, drept b)
{   drept c;
    c.x0=vmax(a.x0,b.x0);
    c.y0=vmax(a.y0,b.y0);
    c.x1=vmin(a.x1,b.x1);
    c.y1=vmin(a.y1,b.y1);
    if(c.x0>c.x1 || c.y0>c.y1) return d[0];
    return c;
}

int main()
{   for(int i=1;i<=3;i++) f>>d[i].x0>>d[i].y0>>d[i].x1>>d[i].y1;
    ll arie=ar(d[1])+ar(d[2])+ar(d[3])-ar(idr(d[1],d[2]))-ar(idr(d[1],d[3]))-ar(idr(d[3],d[2]))
    +ar(idr(idr(d[1],d[2]),d[3]));
    ll perimetru=per(d[1])+per(d[2])+per(d[3])-per(idr(d[1],d[2]))-per(idr(d[1],d[3]))-per(idr(d[3],d[2]))
    +per(idr(idr(d[1],d[2]),d[3]));
    g<<arie<<' '<<perimetru; g.close(); f.close(); return 0;
}