Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <cstdio>const int INF = 0x3f3f3f3f;using namespace std;struct point{int x,y;point(int tx=0,int ty=0):x(tx),y(ty) {}} p[1005];bool isInteriorAngle(int id,int n){if(p[id].x > p[(id-1+n)%n].x && p[id].y < p[(id+1)%n].y)//右上return false;if(p[id].y > p[(id-1+n)%n].y && p[id].x > p[(id+1)%n].x)//上左return false;if(p[id].x < p[(id-1+n)%n].x && p[id].y > p[(id+1)%n].y)//左下return false;if(p[id].y < p[(id-1+n)%n].y && p[id].x < p[(id+1)%n].x)//下右return false;return true;}bool isInersect(point leftDown,point rightUp,int n){bool flag = true;for(int i = 0; i<n; i++){if(p[i].x == p[(i+1)%n].x){if(p[i].x <= leftDown.x || p[i].x >= rightUp.x||max(p[i].y,p[(i+1)%n].y) <= leftDown.y || min(p[i].y,p[(i+1)%n].y)>=rightUp.y)continue;else