Cod sursa(job #839205)

Utilizator alohaPop Ovidiu aloha Data 21 decembrie 2012 14:58:35
Problema Reuniune Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.8 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)
{
    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)
{
    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)
{
    x= x1[i]-x0[i];
    if (x<0) x=-x;
    y=y1[i]-y0[i];
    if (y<0) y=-y;
    return 2*x+2*y;
}
long long perim2(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++)
cin >> 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+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);

cout <<arietot<< " "<<perimtot;
}