#include using namespace std; #define rep(i,n) for(int i=0; i<(n); ++i) #define st first #define nd second #define pb push_back #define mp make_pair typedef vector vi; typedef pair pii; typedef long long ll; typedef long double ld; const int maxn = 1000 + 5; struct pt { int x, y; bool operator<(const pt &p) const { if(y!=p.y) return y>p.y; else return x < p.x; } pt operator-(const pt &p) const { return {x-p.x,y-p.y}; } }; ostream& operator<<(ostream &os, const pt &p) { return os<<"("< pts; vector vis; ll area; ll sqdist(pt p) { return 1ll*p.x*p.x+1ll*p.y*p.y; } int idx; bool comp(int i, int j) { pt a = pts[i]-pts[idx], b=pts[j]-pts[idx]; if(sign(a.x) != sign(b.x)) return sign(a.x) > sign(b.x); ll cr = 1ll*a.y*b.x-1ll*a.x*b.y; if(cr!=0) return cr>0; return sqdist(a)0 || (scalar(v[i],v[j],idx)==0 && sqlen(v[j])