Cod sursa(job #1597143)

Utilizator DrumeaVDrumea Vasile DrumeaV Data 11 februarie 2016 18:42:47
Problema Reuniune Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <stdio.h>
#include <string.h>
#include <algorithm>

using namespace std;

typedef long long ll;

struct rangle
{
    ll x1,y1,x2,y2;
};

rangle a,b,c;

ll ar(rangle r)
{
    return (r.x2 - r.x1) * (r.y2 - r.y1);
}

ll pr(rangle r)
{
    return 2 * (r.x2 - r.x1) + 2 * (r.y2 - r.y1);
}

rangle inter(rangle st,rangle nd)
{
    rangle aux;
    aux.x1 = aux.x2 = aux.y1 = aux.y2 = 0;

    if (st.x1 >= nd.x2 || st.x2 <= nd.x1 || st.y1 >= nd.y2 || st.y2 <= nd.y1)
       return aux;

    aux.x1 = max(st.x1,nd.x1);
    aux.y1 = max(st.y1,nd.y1);
    aux.x2 = min(st.x2,nd.x2);
    aux.y2 = min(st.y2,nd.y2);
    return aux;
}

int main()
{
    freopen("reuniune.in","r",stdin);
    freopen("reuniune.out","w",stdout);

     scanf("%lld %lld %lld %lld",&a.x1,&a.y1,&a.x2,&a.y2);
     scanf("%lld %lld %lld %lld",&b.x1,&b.y1,&b.x2,&b.y2);
     scanf("%lld %lld %lld %lld",&c.x1,&c.y1,&c.x2,&c.y2);

     printf("%lld ",ar(a) + ar(b) + ar(c) - ar(inter(a,b)) - ar(inter(a,c)) - ar(inter(b,c)) + ar(inter(a,inter(b,c))));
     printf("%lld ",pr(a) + pr(b) + pr(c) - pr(inter(a,b)) - pr(inter(a,c)) - pr(inter(b,c)) + pr(inter(a,inter(b,c))));

  return 0;
}