Cod sursa(job #839216)

Utilizator paulhelmerPaul Helmer paulhelmer Data 21 decembrie 2012 15:14:04
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.61 kb
#include <fstream>

using namespace std;
long long x0[5], y0[5], x1[5], y1[5];
long long x, y, i, j, arietot, perimtot, a1, a0, b1, b0;
long long arie(long long i, long long j)
{
    if (x1[j]>x1[i]) a1=x1[j];
    else a1=x1[i];
    if (x0[j]>x0[i]) a0=x0[j];
    else a0=x0[i];
    if (y1[j]>y1[i]) b1=y1[j];
    else b1=y1[i];
    if (y0[j]>y0[i]) b0=y0[j];
    else b0=y0[i];
    x=a1-a0;
    y=b1-b0;
    if (x<0) x=0;
    if (y<0) y=0;
    return x*y;
}

long long perim(long long i, long long j)
{
    if (x1[j]>x1[i]) a1=x1[j];
    else a1=x1[i];
    if (x0[j]>x0[i]) a0=x0[j];
    else a0=x0[i];
    if (y1[j]>y1[i]) b1=y1[j];
    else b1=y1[i];
    if (y0[j]>y0[i]) b0=y0[j];
    else b0=y0[i];
    x=a1-a0;
    y=b1-b0;
    if (x<0) x=0;
    if (y<0) y=0;
    return 2*x+2*y;
}

int main()
{
    long long x, y, ariecom, perimcom;

ifstream f("reuniune.in");
ofstream g("reuniune.out");

long long minx=x1[1], maxx=x0[1], miny=y1[1], maxy=y0[1];

for (i=1; i<=3;i++)
f >> x0[i] >> y0[i] >> x1[i] >> y1[i];

for (i=1; i<=3; i++)
{
    if (x1[i]<=minx) minx=x1[i];
    if (x0[i]>=maxx) maxx=x0[i];
    if (y1[i]<=miny) miny=y1[i];
    if (y0[i]>=maxy) maxy=y0[i];
}

x=minx-maxx;
y=miny-maxy;

if(x<0) x=0;
if(y<0) y=0;

ariecom=x*y;
perimcom=2*(x+y);

arietot=ariecom+(x1[1]-x0[1])*(y1[1]-y0[1])+(x1[2]-x0[2])*(y1[2]-y0[2])+(x1[3]-x0[3])*(y1[3]-y0[3])-arie(1,2)-arie(2,3)-arie(3,1);
perimtot=perimcom+2*(x1[1]-x0[1])+2*(y1[1]-y0[1])+ 2*(x1[2]-x0[2])+2*(y1[2]-y0[2])+2*(x1[3]-x0[3])+2*(y1[3]-y0[3])-perim(1,2)-perim(2,3)-perim(3,1);

g <<arietot<< " "<<perimtot;
}