Pagini recente » Cod sursa (job #445263) | Cod sursa (job #2840138) | Cod sursa (job #1397281) | Cod sursa (job #741306) | Cod sursa (job #1472510)
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
#define x first
#define y second
pair<double,double> v[120005],r;
int s[120005],h,n,i,p;
double C(P o,P a,P b) { return (a.x-o.x)*(b.y-o.y)-(b.x-o.x)*(a.y-o.y); }
int main() {
freopen("infasuratoare.in","r",stdin),freopen("infasuratoare.out","w",stdout),scanf("%d",&n);
for(p=i=1;i<=n;i++)
scanf("%lf%lf",&v[i].x,&v[i].y),p=v[i].x<v[p].x||(v[i].x==v[p].x&&v[i].x<v[p].x)?i:p;
r=v[1],v[1]=v[p],v[p]=r,s[++h]=1;
sort(v+2,v+n+1);
for(i=2;i<=n;i++) {
for(;h>1&&C(v[s[h-1]],v[s[h]],v[i])>0;h--);
s[++h]=i;
}
printf("%d\n",h);
for(i=h;i;i--)
printf("%.6lf %.6lf\n",v[s[i]].x,v[s[i]].y);
}