水题,根本不用凸包,就是一简单的极角排序。
叉乘<0,逆时针。
#include#include #include #include #include using namespace std;const int maxn=55;struct point{ double x,y;} p[maxn];double cross(point c1,point b1,point a2){ return (b1.x-c1.x)*(a2.y-c1.y)-(b1.y-c1.y)*(a2.x-c1.x);}bool cmp(point a,point b){ point c; c.x=0;c.y=0; return cross(c,b,a)<0;}int main(){ int n=0; while(scanf("%lf %lf",&p[n].x,&p[n].y)!=EOF) n++; sort(p+1,p+n, cmp); for(int i =0; i