Pagini recente » Cod sursa (job #1146410) | Cod sursa (job #37420) | Cod sursa (job #1960495) | Cod sursa (job #2560672) | Cod sursa (job #2447682)
#include<fstream>
#include<algorithm>
#include<iostream>
using namespace std;
ifstream f("infasuratoare.in");
ofstream g("infasuratoare.out");
int n,i,dim;
double panta,pmin;
struct punct
{
double x;
double y;
};
punct e[1005],infasuratoare[1005],P,Q,minn,P1,P2,P3,P4;
int main()
{
f>>n;
for(i=1;i<=n;i++)
f>>e[i].x>>e[i].y;
dim=0;
for(i=1;i<=n;i++)
{
if(e[i].x<P4.x)
P4=e[i];
if(e[i].x>P2.x)
P2=e[i];
if(e[i].y<P1.y)
P1=e[i];
if(e[i].y>P3.y)
P3=e[i];
}
for(i=1;i<=n;i++)
{
if(e[i].x==P4.x)
if(e[i].y>P4.y)
P4=e[i];
if(e[i].x==P2.x)
if(e[i].y<P2.y)
P2=e[i];
if(e[i].y==P1.y)
if(e[i].x<P1.x)
P1=e[i];
if(e[i].y==P3.y)
if(e[i].x>P3.x)
P3=e[i];
}
///cout<<P1.x<<" "<<P1.y<<"\n";
///cout<<P2.x<<" "<<P2.y<<"\n";
///cout<<P3.x<<" "<<P3.y<<"\n";
///cout<<P4.x<<" "<<P4.y<<"\n";
dim++;
infasuratoare[dim]=P1;
while(! (P.x==P2.x && P.y==P2.y))
{
pmin=2147348646;
panta=0;
for(i=1;i<=n;i++)
{
if(e[i].x>P.x)
{
Q=e[i];
if(! (P.x==Q.x && P.y==Q.y))
{
///verificam daca punctul Q este cel cautat
///calculam panta
panta=(Q.y-P.y)/(Q.x-P.x);
if(panta<pmin)
{
pmin=panta;
minn=Q;
}
}
}
}
P=minn;
dim++;
infasuratoare[dim]=P;
}
while(! (P.x==P3.x && P.y==P3.y))
{
pmin=2147348646;
panta=0;
for(i=1;i<=n;i++)
{
if(e[i].y>P.y)
{
Q=e[i];
if(! (P.x==Q.x && P.y==Q.y))
{
///verificam daca punctul Q este cel cautat
///calculam panta
panta=(Q.y-P.y)/(Q.x-P.x);
if(panta<pmin)
{
pmin=panta;
minn=Q;
}
}
}
}
P=minn;
dim++;
infasuratoare[dim]=P;
}
while(! (P.x==P4.x && P.y==P4.y))
{
pmin=2147348646;
panta=0;
for(i=1;i<=n;i++)
{
if(e[i].x<P.x)
{
Q=e[i];
if(! (P.x==Q.x && P.y==Q.y))
{
///verificam daca punctul Q este cel cautat
///calculam panta
panta=(Q.y-P.y)/(Q.x-P.x);
if(panta<pmin)
{
pmin=panta;
minn=Q;
}
}
}
}
P=minn;
dim++;
infasuratoare[dim]=P;
}
while(! (P.x==P1.x && P.y==P1.y))
{
pmin=2147348646;
panta=0;
for(i=1;i<=n;i++)
{
if(e[i].y<P.y)
{
Q=e[i];
if(! (P.x==Q.x && P.y==Q.y))
{
///verificam daca punctul Q este cel cautat
///calculam panta
panta=(Q.y-P.y)/(Q.x-P.x);
if(panta<pmin)
{
pmin=panta;
minn=Q;
}
}
}
}
P=minn;
dim++;
infasuratoare[dim]=P;
}
infasuratoare[dim].x=0;
infasuratoare[dim].y=0;
dim--;
for(i=1;i<=dim;i++)
g<<infasuratoare[i].x<<" "<<infasuratoare[i].y<<"\n";
f.close();
g.close();
return 0;
}