trang chủ / đề bài / mowing16

Cắt Cỏ

Đề bài

Mô tả

Một máy cắt cỏ di chuyển trên mặt phẳng theo một đường gấp khúc gồm N−1 đoạn thẳng liên tiếp, luân phiên nằm ngang và thẳng đứng. Đường đi được cho bởi N điểm: điểm thứ 0 là vị trí xuất phát, còn đoạn thứ i (với 0≤i≤N−2) nối điểm thứ i với điểm thứ i+1.

Đoạn thứ i và đoạn thứ j (i<j) tạo thành một cặp giao nhau vuông góc nếu:

  • một đoạn nằm ngang còn đoạn kia thẳng đứng;
  • chúng cắt nhau tại một điểm nằm hoàn toàn bên trong cả hai đoạn (nếu chỉ chạm nhau ở đầu mút thì không tính);
  • j−i≥T.

Hãy đếm số cặp giao nhau vuông góc thỏa mãn cả ba điều kiện trên.

Dữ liệu vào

  • Dòng đầu: hai số nguyên N và T.
  • N dòng tiếp theo: dòng thứ i (đánh số từ 0 đến N−1) chứa hai số nguyên xi, yi là tọa độ của điểm thứ i.

Dữ liệu đảm bảo mọi đoạn đều có độ dài dương và hai đoạn liên tiếp luôn vuông góc với nhau, tức là mỗi đoạn chỉ làm thay đổi đúng một trong hai tọa độ.

Dữ liệu ra

Một số nguyên duy nhất: số cặp đoạn giao nhau vuông góc với j−i≥T.

Ràng buộc

  • 2≤N≤105
  • 0≤xi,yi≤109
  • 2≤T≤N, T là số chẵn

Ví dụ

Input Output Giải thích
7 4
0 10
10 10
10 5
3 5
3 12
6 12
6 3
1 Đoạn 5 (thẳng đứng, x=6, y chạy trong [3,12]) cắt đoạn 0 (nằm ngang, y=10, x chạy trong [0,10]) tại điểm (6,10), với 5−0=5≥4. Đây là cặp duy nhất thỏa mãn.
7 2
0 5
10 5
10 15
2 15
2 0
8 0
8 12
2 Đoạn 3 (x=2, y∈[0,15]) cắt đoạn 0 (y=5, x∈[0,10]) tại (2,5); đoạn 5 (x=8, y∈[0,12]) cắt đoạn 0 tại (8,5). Cả hai cặp đều có hiệu chỉ số ít nhất 2. Đoạn 5 không cắt đoạn 2 (y=15) vì nó chỉ vươn tới y=12.

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