Cod sursa(job #1411549)

Utilizator raduzxstefanescu radu raduzx Data 31 martie 2015 19:41:18
Problema Reuniune Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.16 kb
#include <fstream>

using namespace std;
typedef long long var;
struct dreptunghi
{
    var x,y,x1,y1;
};
dreptunghi a,b,c;
unsigned long long aria,p;
int main()
{
    ifstream f("reuniune.in");
    ofstream g("reuniune.out");
    f>>a.x>>a.y>>a.x1>>a.y1;
    f>>b.x>>b.y>>b.x1>>b.y1;
    f>>c.x>>c.y>>c.x1>>c.y1;
    aria=(a.x1-a.x)*(a.y1-a.y)+(b.x1-b.x)*(b.y1-b.y)+(c.x1-c.x)*(c.y1-c.y);

  /*  if(a.x<b.x1<a.x1 and a.y<b.y1<a.y1)
    {
        if(a.x<b.x<a.x1 and a.y<b.y<a.y1)
            aria-=((b.x1-b.x)*(b.y1-b.y));
        else
        {
            aria-=((min(a.x1,b.x1)-max(a.x,b.x))*(min(a.y1,b.y1)-max(a.y,b.y)));
        }
    }*/

    if((min(a.x1,b.x1)-max(a.x,b.x)>=0 and min(a.y1,b.y1)-max(a.y,b.y)>0))
        aria-=((min(a.x1,b.x1)-max(a.x,b.x))*(min(a.y1,b.y1)-max(a.y,b.y)));
    if(min(c.x1,b.x1)-max(c.x,b.x)>=0 and min(c.y1,b.y1)-max(c.y,b.y)>=0)
        aria-=((min(c.x1,b.x1)-max(c.x,b.x))*(min(c.y1,b.y1)-max(c.y,b.y)));
    if(min(a.x1,c.x1)-max(a.x,c.x)>=0 and min(a.y1,c.y1)-max(a.y,c.y)>=0)
        aria-=((min(a.x1,c.x1)-max(a.x,c.x))*(min(a.y1,c.y1)-max(a.y,c.y)));
    if(min(min(a.x1,b.x1),c.x1)-max(max(a.x,b.x),c.x)>0 and min(min(a.y1,b.y1),c.y1)-max(max(a.y,b.y),c.y)>0)
    aria+=(min(min(a.x1,b.x1),c.x1)-max(max(a.x,b.x),c.x))*(min(min(a.y1,b.y1),c.y1)-max(max(a.y,b.y),c.y));
    g<<aria<<" ";

    p=(a.x1-a.x)*2+(a.y1-a.y)*2+(b.x1-b.x)*2+(b.y1-b.y)*2+(c.x1-c.x)*2+(c.y1-c.y)*2;
    if((min(a.x1,b.x1)-max(a.x,b.x))>0 and min(a.y1,b.y1)-max(a.y,b.y)>0)
        p-=((min(a.x1,b.x1)-max(a.x,b.x))*2+(min(a.y1,b.y1)-max(a.y,b.y))*2);
    if(min(a.x1,c.x1)-max(a.x,c.x)>0 and min(a.y1,c.y1)-max(a.y,c.y)>0)
        p-=((min(a.x1,c.x1)-max(a.x,c.x))*2+(min(a.y1,c.y1)-max(a.y,c.y))*2);
    if(min(c.x1,b.x1)-max(c.x,b.x)>0 and min(c.y1,b.y1)-max(c.y,b.y)>0)
        p-=((min(c.x1,b.x1)-max(c.x,b.x))*2+(min(c.y1,b.y1)-max(c.y,b.y))*2);

    if(min(min(a.x1,b.x1),c.x1)-max(max(a.x,b.x),c.x)>0 and min(min(a.y1,b.y1),c.y1)-max(max(a.y,b.y),c.y)>0)
        p+=(min(min(a.x1,b.x1),c.x1)-max(max(a.x,b.x),c.x))*2+(min(min(a.y1,b.y1),c.y1)-max(max(a.y,b.y),c.y))*2;
    g<<p;
    f.close();
    g.close();
    return 0;
}