Cod sursa(job #1324282)

Utilizator LegionHagiu Stefan Legion Data 22 ianuarie 2015 01:43:05
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.73 kb
#include <iostream>
#include <fstream>
using namespace std;
int ax[4],ay[4],bx[4],by[4],areuniunea,preuniunea,i;
int axb,ayb,bxb,byb;
int reuniunea1(int a)
{
    axb=max(ax[1],ax[2]);
    ayb=max(ay[1],ay[2]);
    bxb=min(bx[1],bx[2]);
    byb=min(by[1],by[2]);
    if (a==1)
    {
        return(bxb-axb)*(byb-ayb);
    }
    else
    {
        return (2*(bxb-axb)+2*(byb-ayb));
    }
}
int reuniuneainplus(int a)
{
    axb=max(ax[3],ax[1]);
    ayb=max(ay[3],ay[1]);
    bxb=min(bx[3],bx[1]);
    byb=min(by[3],by[1]);
    if (a==1)
    {
        return(bxb-axb)*(byb-ayb);
    }
    else
    {
        return (2*(bxb-axb)+2*(byb-ayb));
    }
}
int reuniunea2(int a)
{
    axb=max(ax[3],ax[2]);
    ayb=max(ay[3],ay[2]);
    bxb=min(bx[3],bx[2]);
    byb=min(by[3],by[2]);
    if (a==1)
    {
        return(bxb-axb)*(byb-ayb);
    }
    else
    {
        return (2*(bxb-axb)+2*(byb-ayb));
    }
}
int reuniuneatotala(int a)
{
    axb=max(ax[1],axb);
    ayb=max(ay[1],ayb);
    bxb=min(bx[1],bxb);
    byb=min(by[1],byb);
    if (a==1)
    {
        return(bxb-axb)*(byb-ayb);
    }
    else
    {
        return (2*(bxb-axb)+2*(byb-ayb));
    }
}
int main()
{
    ifstream in("reuniune.in");
    ofstream out("reuniune.out");
    for (i=1;i<=3;i++)
    {
        in>>ax[i];
        in>>ay[i];
        in>>bx[i];
        in>>by[i];
    }
    out<<(bx[1]-ax[1])*(by[1]-ay[1])+(bx[2]-ax[2])*(by[2]-ay[2])+(bx[3]-ax[3])*(by[3]-ay[3])-reuniunea1(1)-reuniuneainplus(1)-reuniunea2(1)+reuniuneatotala(1);
    out<<" ";
    out<<2*(bx[1]-ax[1])+2*(by[1]-ay[1])+2*(bx[2]-ax[2])+2*(by[2]-ay[2])+2*(bx[3]-ax[3])+2*(by[3]-ay[3])-reuniunea1(2)-reuniuneainplus(2)-reuniunea2(2)+reuniuneatotala(2);
}