trang chủ / đề bài / icpc21_mt_e

Tứ giác lồi

Đề bài

Mô tả

Tứ giác là một đa giác trong hình học phẳng Euclid có bốn cạnh và bốn đỉnh. Tứ giác có thể là tứ giác đơn (không tự cắt) hoặc tứ giác phức (tự cắt, hay bắt chéo). Tứ giác đơn có thể lồi hoặc lõm. Bài toán này tập trung vào tứ giác lồi. Tứ giác lồi là tứ giác có mọi góc trong nhỏ hơn 180 độ và cả hai đường chéo đều nằm bên trong tứ giác.

Cho 4 điểm trong mặt phẳng, hỏi chúng có thể là 4 đỉnh của một tứ giác lồi hay không?

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên t (1≤t≤100): số bộ test.
  • Mỗi bộ test gồm một dòng chứa 8 số nguyên x1,y1,x2,y2,x3,y3,x4,y4 (−109≤xi,yi≤109): tọa độ của 4 điểm.

Dữ liệu ra

Với mỗi bộ test, in YES nếu 4 điểm này là 4 đỉnh của một tứ giác lồi, ngược lại in NO.

Ràng buộc

  • 1≤t≤100.
  • −109≤xi,yi≤109.

Ví dụ

Input Output Giải thích
2
1 0 0 4 3 5 5 2
1 0 0 4 2 2 5 2
YES
NO
Ở bộ test thứ nhất, các điểm (1,0), (0,4), (3,5), (5,2) theo thứ tự này tạo thành một tứ giác lồi. Ở bộ test thứ hai, điểm (2,2) nằm trong tam giác tạo bởi ba điểm còn lại.
3
0 0 0 0 1 0 0 1
0 0 2 0 1 0 0 1
0 0 1 1 1 0 0 1
NO
NO
YES
Ví dụ bổ sung (không có trong đề gốc). Bộ test thứ nhất có hai điểm trùng nhau. Ở bộ test thứ hai, ba điểm (0,0), (1,0), (2,0) thẳng hàng nên góc tại (1,0) bằng 180 độ. Bộ test thứ ba là một hình vuông.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0