trang chủ / đề bài / shoearea

Diện tích đa giác đơn

Đề bài

Mô tả

Cho một đa giác đơn (các cạnh không cắt nhau, ngoài việc dùng chung đầu mút liền kề) có N đỉnh, được liệt kê theo thứ tự dọc theo chu vi (có thể cùng chiều kim đồng hồ hoặc ngược chiều kim đồng hồ). Các đỉnh có tọa độ nguyên.

Hãy tính hai lần diện tích của đa giác. Kết quả luôn là một số nguyên không âm.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên N — số đỉnh của đa giác.
  • N dòng tiếp theo, dòng thứ i chứa hai số nguyên xi và yi — tọa độ đỉnh thứ i.

Dữ liệu ra

Một số nguyên duy nhất là hai lần diện tích của đa giác.

Ràng buộc

  • 3≤N≤105.
  • |xi|,|yi|≤106.
  • Đa giác là đa giác đơn (không tự cắt).
  • Không có ba đỉnh liên tiếp thẳng hàng và đa giác có diện tích thực sự dương.

Ví dụ

Input Output Giải thích
4
0 0
4 0
4 3
0 3
24 Hình chữ nhật 4×3 có diện tích 12, gấp đôi là 24.
3
0 0
5 0
0 4
20 Tam giác vuông cạnh 5 và 4, diện tích 10, gấp đôi là 20.

Ghi chú

Sử dụng công thức Shoelace (dây giày):

2·S=|∑i=1N(xi·yi+1−xi+1·yi)|

trong đó các chỉ số tính theo chu trình (đỉnh sau đỉnh N là đỉnh 1).

Hãy chú ý kiểu dữ liệu: với N,|x|,|y| ở mức tối đa, tổng có thể vượt phạm vi 32-bit.

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