Pagini recente »
Monitorul de evaluare
|
Istoria paginii utilizator/tudosierazvan
|
Cod sursă (job #643776)
|
utilizator/tzepu
|
Cod sursă (job #823314)
Cod sursă (job
#823314)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream cin("infasuratoare.in");
ofstream cout("infasuratoare.out");
#define P pair<int,int>
#define y first
#define x second
P a[100001],b[100001];
bool A(P a,P b,P c)
{
return 1LL*(a.x-b.x)*(c.y-b.y)<1LL*(a.y-b.y)*(c.x-b.x);
}
int main()
{
int m=2,n;
cin>>n;
for(int i=1;i<=n;cin>>a[i].x>>a[i].y,++i);
sort(a+1,a+n+1),b[0]=a[1],b[1]=a[2];
for(int i=3;i<=n;b[m++]=a[i++])
for(;m>1&&!A(b[m-2],b[m-1],a[i]);--m);
int k=m-1;
b[m++]=a[n-1],b[m++]=a[n-2],b[m++]=a[n-3];
for(int i=n-4;i;b[m++]=a[i--])
for(;m>k+1&&!A(b[m-2],b[m-1],a[i]);--m);
--m,cout<<m<<'\n';
for(int i=0;i<m;cout<<b[i].x<<' '<<b[i].y<<'\n',++i);
return 0;
}