Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Point{
- public:
- int x, y;
- Point(){x = y = 0;}
- void make_point(int X, int Y){ x = X; y = Y; }
- int Point:: orientation (Point &p0, Point &p1){
- Point p2 = *this;
- Point a = p1 - p0;
- Point b = p2 - p0;
- int area = (a.x * b.y) - (b.x * a.y);
- if (area > 0)return 1;
- if (area < 0)return -1;
- return 0;
- }
- };
- int main() {
- Point p[4];
- p[0].make_point(0, 0);
- p[1].make_point(0, 1);
- p[2].make_point(1, 1);
- p[3].make_point(1, 0);
- int sz = sizeof(p) / sizeof(p[0]);
- int ans = 0;
- for (int i = 0; i < sz; i++){
- for (int j = i+1; j < sz; j++){
- int leftCnt = 0, rightCnt = 0;
- for (int k = 0; k < sz; k++){
- if (k == i || k == j)continue;
- if (p[k].orientation(p[i], p[j]) == 1)leftCnt++;
- if (p[k].orientation(p[i], p[j]) == -1)rightCnt++;
- }
- if (leftCnt == rightCnt && leftCnt == (sz/2-1))ans++;
- }
- }
- cout << ans << 'n';
- return 0;
- }
Add Comment
Please, Sign In to add comment