这时我能想到的最简便,最好打,常数最小,精度最高的方法了
(听说这时标准打法???喵喵喵???)
先把所有的点以X轴为标准分成两堆,
对于X轴上、下方的,分别按顺、逆时针排序即可,
这个用向量的差积+sort即可。
PS:为什么要分开,因为如果直接用差积,sort只保证相邻的两个点x,y(x再前),你代入sort的判断函数cmd(x,y)为true,这样就会出现排序完以后的点在绕圈圈,一圈一圈的绕。
Code
q=1;
fo(i,1,n)if(a[i].y>0)swap(a[i],a[q]),q++;
sort(a+1,a+q,CMD);
sort(a+q,a+1+n,CMD);