Cod sursa(job #2247402)

Utilizator Vlad_lsc2008Lungu Vlad Vlad_lsc2008 Data 28 septembrie 2018 16:07:48
Problema Reuniune Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.66 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#define ll long long
using namespace std;

struct trt
{
    int x0,y0,x1,y1;
} tr[4];

trt inter2( trt a,trt b)
{
    trt aux;
    int minix=1e9+5,maxix=-1e9-5,miniy=1e9+5,maxiy=-1e9-5;
    maxix= max( maxix, max(a.x0,b.x0));
    minix= min( minix, min(a.x1,b.x1));
    maxiy= max( maxiy, max(a.y0,b.y0));
    miniy= min( miniy, min(a.y1,b.y1));
    aux.x0=maxix; aux.x1=minix; aux.y0=maxiy; aux.y1=miniy;
    return aux;
}

int main()
{
    ifstream t1("reuniune.in");
    ofstream t2("reuniune.out");
    int i;
    long long minix=1e9+5,maxix=-1e9-5,miniy=1e9+5,maxiy=-1e9-5,mxx=-1e9-5,mnx=1e9+5,mxy=-1e9-5,mny=1e9+5;
    long long arie=0,perimetru=0;
    for(i=1;i<=3;i++)
    {
        t1>>tr[i].x0>>tr[i].y0>>tr[i].x1>>tr[i].y1;
        arie+=1ll*(tr[i].x1-tr[i].x0)*(tr[i].y1-tr[i].y0);
        perimetru+=2*(tr[i].x1-tr[i].x0 + tr[i].y1-tr[i].y0);
    }

    tr[0]=inter2(tr[1],tr[2]);
    arie-=1ll*(tr[0].x1-tr[0].x0)*(tr[0].y1-tr[0].y0);
    perimetru-=2*(tr[0].x1-tr[0].x0 + tr[0].y1-tr[0].y0);

    tr[0]=inter2(tr[1],tr[3]);
    arie-=1ll*(tr[0].x1-tr[0].x0)*(tr[0].y1-tr[0].y0);
    perimetru-=2*(tr[0].x1-tr[0].x0 + tr[0].y1-tr[0].y0);

    tr[0]=inter2(tr[2],tr[3]);
    arie-=1ll*(tr[0].x1-tr[0].x0)*(tr[0].y1-tr[0].y0);
    perimetru-=2*(tr[0].x1-tr[0].x0 + tr[0].y1-tr[0].y0);

    tr[0]=inter2(tr[1],tr[2]);
    tr[0]=inter2(tr[0],tr[3]);
    arie+=1ll*(tr[0].x1-tr[0].x0)*(tr[0].y1-tr[0].y0);
    perimetru+=2*(tr[0].x1-tr[0].x0 + tr[0].y1-tr[0].y0);

    //cout<<tr[0].x0<<' '<<tr[0].y0<<' '<<tr[0].x1<<' '<<tr[0].y1<<'\n';
    t2<<arie<<' '<<perimetru<<'\n';
}