Cod sursa(job #2257141)

Utilizator georgitTreista Georgiana georgit Data 9 octombrie 2018 18:29:59
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>

using namespace std;

struct dreptunghi{
long long x0,y0,x1,y1;
} d[10];
dreptunghi intersectie(int i,int j)
{
   dreptunghi D;
   D.x0=max(d[i].x0,d[j].x0);
   D.y0=max(d[i].y0,d[j].y0);
   D.x1=min(d[i].x1,d[j].x1);
   D.y1=min(d[i].y1,d[j].y1);
   return D;
}
long long arie(dreptunghi D)
{
    if(D.x0>D.x1 or D.y0>D.y1)
        return 0;
    return (D.x1-D.x0)*(D.y1-D.y0);
}
long long p(dreptunghi D)
{
    if(D.x0>D.x1 or D.y0>D.y1)
        return 0;
    return 2*(D.x1-D.x0)+2*(D.y1-D.y0);
}
int main()
{
    ifstream f("reuniune.in");
    ofstream g("reuniune.out");
    for(int i=1;i<=3;i++)
        f>>d[i].x0>>d[i].y0>>d[i].x1>>d[i].y1;
    dreptunghi int12=intersectie(1,2);
    dreptunghi int13=intersectie(1,3);
    dreptunghi int23=intersectie(2,3);
    d[4]=int12;
    dreptunghi int123=intersectie(3,4);
    long long ARIE=arie(d[1])+arie(d[2])+arie(d[3])-arie(int12)-arie(int23)-arie(int13)+arie(int123);
    long long P=p(d[1])+p(d[2])+p(d[3])-p(int12)-p(int23)-p(int13)+p(int123);
    g<<ARIE<<" "<<P;
    return 0;
}