#include #include #include using namespace std; struct Point { double x,y; Point(double _x=0,double _y=0):x(_x),y(_y) { } inline bool operator<(const Point &b) { return x0?1:-1); } const int maxn=10005; int n; Point p[maxn],res[maxn]; int ConvexHull(Point *p,int n,Point *res) { sort(p,p+n); int cnt=0; for(int i=0;i=2&&dcmp(Cross(res[cnt-1]-res[cnt-2],p[i]-res[cnt-1]))<=0) cnt--; res[cnt++]=p[i]; } int k=cnt; for(int i=n-2;i>=0;i--) { while(cnt>k&&dcmp(Cross(res[cnt-1]-res[cnt-2],p[i]-res[cnt-1]))<=0) cnt--; res[cnt++]=p[i]; } if(n>1) cnt--; return cnt; } int main() { #ifdef local freopen("pro.in","r",stdin); #endif scanf("%d",&n); for(int i=0;i