Pagini recente » Cod sursa (job #2344012) | Cod sursa (job #3322959) | Cod sursa (job #3322958) | Monitorul de evaluare | Cod sursa (job #2185601)
#include<bits/stdc++.h>
#define pb push_back
#define x first
#define y second
#define p pair<double,double>
using namespace std;
const int N=200020;
p v[N], h[N];
int j;
bool s(p a, p b, p c){
return(b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x)<0;
}
int main(){
ifstream f("infasuratoare.in");
ofstream g("infasuratoare.out");
int n;
f>>n;
for(int i=0;i<n;i++)f>>v[i].x>>v[i].y;
sort(v, v+n);
reverse_copy(v,v+n-1,v+n);
int i, m=2*n-1;
for(i=0;i<m;h[j++]=v[i++]) while(j>1 && s(h[j-2], h[j-1],v[i]))--j;
g<<--j<<endl;
g<<setprecision(6)<<fixed;
for(int i=0;i<j;i++)g<<h[i].x<<' '<<h[i].y<<endl;
return 0;
}