Cod sursa(job #839164)

Utilizator paulhelmerPaul Helmer paulhelmer Data 21 decembrie 2012 14:16:24
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <fstream>
using namespace std;
long long x0[5], y0[5], x1[5], y1[5];
long long x, y, i, j, arietot, perimtot;
long long arie( long long i)
{
    if (x1[i]>x0[i]) x= (x1[i]-x0[i]);
    else x=x0[i]-x1[i];
    if (y1[i]>y0[i]) y=y1[i]-y0[i];
    else y=y0[i]-y1[i];
    return x*y;

}
long long arie2(long long i, long long j)
{
    x=x1[j]-x0[i];
    if (x<0) x=-x;
    y=y1[j]-y0[i];
    if (y<0) y=-y;
    return x*y;
}
long long perim(long long i)
{
    x= x1[i]-x0[i];
    if (x<0) x=-x;
    y=y1[i]-y0[i];
    if (y<0) y=-y;
    return 2*(x+y);
}
long long perim2(long long i, long long j)
{
    x=x1[j]-x0[i];
    if (x<0) x=-x;
    y=y1[j]-y0[i];
    if (y<0) y=-y;
    return 2*(x+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;

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

arietot=ariecom+arie(1)+arie(2)+arie(3)-arie2(1,2)-arie2(2,3)-arie2(3,1);
perimtot=perimcom+perim(1)+perim(2)+perim(3)-perim2(1,2)-perim2(2,3)-perim2(3,1);

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