Pagini recente » Monitorul de evaluare | Cod sursa (job #2838961) | Cod sursa (job #1556588) | Cod sursa (job #1856128) | Cod sursa (job #2877883)
#include <fstream>
#include <algorithm>
using namespace std;
int st[120001];
ifstream cin("infasuratoare.in");
ofstream cout("infasuratoare.out");
struct ura
{
float x,y;
int o;
}p[120001],p1[120001],p2[120001];
bool cmp( ura a, ura b)
{
if(a.y<b.y)
return true;
if(a.y>b.y)
return false;
if(a.x<b.x)
return true;
return false;
}
int main()
{
int n,i,k1=1,k2=1,k;
double a;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>p[i].x>>p[i].y;
p[i].o=i;
}
sort(p+1,p+n+1,cmp);
p2[1].x=p[1].x;
p2[1].y=p[1].y;
p2[1].o=p[1].o;
for(i=2;i<n;i++)
{
a=(p[1].x*p[n].y+p[n].x*p[i].y+p[i].x*p[1].y+p[1].x*p[n].y-p[1].y*p[n].x-p[n].y*p[i].x-p[i].y*p[1].x-p[1].y*p[n].x)/2;
if(a<0)///punctul se afla la dreapta
{
p2[++k2].x=p[i].x;
p2[k2].y=p[i].y;
p2[k2].o=p[i].o;
}
else
{
p1[++k1].x=p[i].x;
p1[k1].y=p[i].y;
p2[k1].o=p[i].o;
}
}
p2[++k2].x=p[n].x;
p2[k2].y=p[n].y;
p2[k2].o=p[n].o;
st[1]=1;
st[2]=2;
k=2;
for(i=3;i<=k2;i++)
{
a=(p[k-1].x*p[k].y+p[k].x*p[i].y+p[i].x*p[k-1].y+p[k-1].x*p[k].y-p[k-1].y*p[k].x-p[k].y*p[i].x-p[i].y*p[k-1].x-p[k-1].y*p[k].x)/2;
}
return 0;
}