#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define mind(a,b) (a>b?b:a) #define maxd(a,b) (a>b?a:b) #define absd(x) (x<0?-(x):x) #define pow2(x) ((x)*(x)) #define rep(i,n) for(int i=0; i=0; --i) #define repl(i,s,n) for(int i=s; i<=n; ++i) #define replr(i,s,n) for(int i=n; i>=s; --i) #define repf(i,s,n,j) for(int i=s; i<=n; i+=j) #define repe(e,obj) for(auto e : obj) #define SP << " " << #define COL << " : " << #define COM << ", " << #define ARR << " -> " << #define PNT(STR) cout << STR << endl #define POS(X,Y) "(" << X << ", " << Y << ")" #define DEB(A) " (" << #A << ") " << A #define DEBREP(i,n,val) for(int i=0; i P; typedef pair PI; typedef pair IP; typedef pair PP; typedef priority_queue, greater

> pvqueue; struct Pos { ll x, y; bool operator< (const Pos& other) const { return (x == other.x ? y < other.y : x < other.x); } }; inline ll cross(Pos &a, Pos &b, Pos &c) { return (((b.x - a.x) * (c.y - a.y)) - ((b.y - a.y) * (c.x - a.x))); } void convex_hull(vector &ps, vector &qs) { qs.clear(); qs.reserve(ps.size()); int n = ps.size(); for(auto p : ps) { while(qs.size() > 1 && cross(qs[qs.size()-2], qs[qs.size()-1], p) > 0) { qs.pop_back(); } qs.push_back(p); } int t = qs.size(); for(int i = n-2; i >= 0; --i) { Pos &p = ps[i]; while(qs.size() > t && cross(qs[qs.size()-2], qs[qs.size()-1], p) > 0) { qs.pop_back(); } qs.push_back(p); } qs.pop_back(); } P diff_pair( P p1, P p2 ){ // caculate difference of p1 from p2 int a = p1.first - p2.first; int b = p1.second - p2.second; return make_pair(a,b); } int signed_area( P p1, P p2, P p3 ){ // to chech relativistic position of 3 poins P v1 = diff_pair( p2,p1 ); P v2 = diff_pair( p3,p1 ); return v1.first*v2.second - v1.second*v2.first; // calc area as z-component of v1 x v2 } int main() { int n; vector ps, qs; cin >> n; rep(i, n) { int x, y; cin >> x >> y; ps.emplace_back(Pos{y, x}); } sort(ALL(ps)); convex_hull(ps, qs); //cout << qs.size() << endl; string ans = "Yes"; if(n != qs.size()) { cout << "No" << endl; return 0; } for(int i=1;i