Pagini recente » Cod sursa (job #408845) | Cod sursa (job #1280006) | Cod sursa (job #1174989) | Cod sursa (job #458048) | Cod sursa (job #1731854)
#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef long double LD;
typedef pair<LD, LD> PLD;
PLD v[400000], h[400000];
int n,j;
bool d(PLD a, PLD b, PLD c)
{
return (a.x-c.x)*(b.y-c.y) - (a.y-c.y)*(b.x-c.x) < 0;
}
int main(){
freopen("infasuratoare.in", "rt", stdin);
freopen("infasuratoare.out", "wt", stdout);
cin>>n;
for(int i=0; i<n; ++i)
cin>>v[i].x>>v[i].y;
sort(v, v+n);
reverse_copy(v, v+n-1, v+n);
for(int i=0; i<2*n-1; h[j++]=v[i++])
while(j>1 && d(h[j-2], h[j-1], v[i]))
j--;
j--;
cout<<j<<"\n";
cout<<setprecision(9)<<fixed;
for(int i=0; i<j; ++i)
cout<<h[i].x<<" "<<h[i].y<<"\n";
return 0;
}