Cod sursa(job #2247423)

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

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

int comp(trt a,trt b)
{
    if( a.x0!= b.x0) return (a.x0<b.x0);
    if( a.y0!= b.y0) return (a.y0<b.y0);
    if( a.x1!= b.x1) return (a.x1<b.x1);
    if( a.y1!= b.y1) return (a.y1<b.y1);
    return 0;
}

trt inter2( trt a,trt b)
{
    trt aux;
    aux.x0= max(a.x0,b.x0);
    aux.x1= min(a.x1,b.x1);
    aux.y0= max(a.y0,b.y0);
    aux.y1= min(a.y1,b.y1);
    return aux;
}

int main()
{
    ifstream t1("reuniune.in");
    ofstream t2("reuniune.out");
    int i;
    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+=(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]);
    //cout<<tr[0].x0<<' '<<tr[0].y0<<' '<<tr[0].x1<<' '<<tr[0].y1<<'\n';
    if(tr[0].x0<=tr[0].x1 && tr[0].y0<=tr[0].y1)
    {
        arie-=(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]);
    if(tr[0].x0<=tr[0].x1 && tr[0].y0<=tr[0].y1)
    {
        arie-=(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]);
    if(tr[0].x0<=tr[0].x1 && tr[0].y0<=tr[0].y1)
    {
        arie-=(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]);
    if(tr[0].x0<=tr[0].x1 && tr[0].y0<=tr[0].y1)
    {
        arie+=(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);
    }

    t2<<arie<<' '<<perimetru<<'\n';
    return 0;
}