Pagini recente » Cod sursa (job #1884532) | Cod sursa (job #2966636) | Cod sursa (job #1698489) | Cod sursa (job #2592955) | Cod sursa (job #880279)
Cod sursa(job #880279)
#include <fstream>
using namespace std;
struct punct
{
long long int x;
long long int y;
};
void init(punct &a)
{
a.x=0;
a.y=0;
}
struct dreptunghi
{
punct st_jos;
punct dr_sus;
};
void init(dreptunghi &a)
{
a.st_jos.x=0;
a.st_jos.y=0;
a.dr_sus.x=0;
a.dr_sus.y=0;
}
bool se_intersecteaza(dreptunghi &a,dreptunghi &b)
{
if(a.dr_sus.x<b.st_jos.x)
return 0;
if(a.dr_sus.y<b.st_jos.y)
return 0;
if(a.st_jos.x>b.dr_sus.x)
return 0;
if(a.st_jos.y>b.dr_sus.y)
return 0;
return 1;
}
long long int minim(long long int a,long long int b)
{
if(a<b)
return a;
return b;
}
long long int maxim(long long int a,long long int b)
{
if(a>b)
return a;
return b;
}
dreptunghi intersectie(dreptunghi &a, dreptunghi &b)
{
dreptunghi aux;
init(aux);
aux.dr_sus.x=minim((a.dr_sus).x,(b.dr_sus).x);
aux.dr_sus.y=minim((a.dr_sus).y,(b.dr_sus).y);
aux.st_jos.x=maxim((a.st_jos).x,(b.st_jos).x);
aux.st_jos.y=maxim((a.st_jos).y,(b.st_jos).y);
return aux;
}
long long int modul(int a)
{
if(a<0)
return ((-1)*(a));
return a;
}
long long int arie(dreptunghi &a)
{
return modul(modul(a.dr_sus.x-a.st_jos.x)*modul(a.dr_sus.y-a.st_jos.y));
}
long long int perimetru(dreptunghi &a)
{
return modul((modul(a.dr_sus.x-a.st_jos.x)+modul(a.dr_sus.y-a.st_jos.y))*2);
}
int main()
{
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
dreptunghi a,b,c;
fin>>a.st_jos.x>>a.st_jos.y;
fin>>a.dr_sus.x>>a.dr_sus.y;
fin>>b.st_jos.x>>b.st_jos.y;
fin>>b.dr_sus.x>>b.dr_sus.y;
fin>>c.st_jos.x>>c.st_jos.y;
fin>>c.dr_sus.x>>c.dr_sus.y;
dreptunghi ab,ac,bc,abc;
if(se_intersecteaza(a,b)==1)
{
ab=intersectie(a,b);
}
else
{
ab.dr_sus.x=0;
ab.dr_sus.y=0;
ab.st_jos.x=0;
ab.st_jos.y=0;
}
if(se_intersecteaza(a,c)==1)
{
ac=intersectie(a,c);
}
else
{
ac.dr_sus.x=0;
ac.dr_sus.y=0;
ac.st_jos.x=0;
ac.st_jos.y=0;
}
if(se_intersecteaza(b,c)==1)
{
bc=intersectie(b,c);
}
else
{
bc.dr_sus.x=0;
bc.dr_sus.y=0;
bc.st_jos.x=0;
bc.st_jos.y=0;
}
if(se_intersecteaza(ab,c)==1)
{
abc=intersectie(ab,c);
}
else
{
abc.dr_sus.x=0;
abc.dr_sus.y=0;
abc.st_jos.x=0;
abc.st_jos.y=0;
}
fout<<arie(a)+arie(b)+arie(c)-arie(ab)-arie(ac)-arie(bc)+arie(abc)<<' '<<perimetru(a)+perimetru(b)+perimetru(c)-perimetru(ab)-perimetru(ac)-perimetru(bc)+perimetru(abc)<<'\n';
fin.close();
fout.close();
return 0;
}