Pagini recente » Cod sursa (job #361654) | Cod sursa (job #375407) | Cod sursa (job #361655) | Cod sursa (job #353761) | Cod sursa (job #363178)
Cod sursa(job #363178)
#include<iostream>
#include<algorithm>
#include<stack>
using namespace std;
struct data{
int x;
int y;
int mark;
int ind;
};
data pct[1000],aux;
long n;
bool compare(data i,data j)
{return ((i.x-pct[1].x)*(j.y-pct[1].y)<(i.y-pct[1].y)*(j.x-pct[1].x));
}
int main()
{stack<int> stiva;
int k,i;
long min=1;
cin>>n;
for(i=1;i<=n;i++)
{cin>>pct[i].x>>pct[i].y;
pct[i].ind=i;}
for(i=2;i<=n;i++)
{if(pct[i].x<pct[min].x)
min=i;}
cout<<min;
aux=pct[min];
pct[min]=pct[1];
pct[1]=aux;
sort(pct+2,pct+n+1,compare);
stiva.push(pct[1].ind);
stiva.push(pct[2].ind);
cout<<stiva.top()<<'\n';
stiva.push(pct[3].ind);
cout<<stiva.top()<<'\n';
k=3;
for(i=4;i<=n;i++)
{while((pct[k].x - pct[k-1].x)*(pct[i].y - pct[k-1].y)<(pct[k].y - pct[k-1].y)*(pct[i].x - pct[k-1].x))
{k=k-1;
}
k=k+1;
stiva.push(pct[i].ind);
}
while(!stiva.empty())
{cout<<" "<<stiva.top();
stiva.pop();
}
return 1;
}