trang chủ / bài tập / 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 N đoạn thẳng liên tiếp, luân phiên nằm ngang và thẳng đứng. Bạn được cho tọa độ của N+1 điểm (bao gồm điểm xuất phát), tạo thành N đoạn (đánh số từ 0 đến N1).

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

  • Một đoạn nằm ngang và đoạn kia thẳng đứng,
  • Chúng thực sự cắt nhau (không chỉ chạm đầu mút),
  • jiT.

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

Dữ liệu vào

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

Đảm bảo: Các đoạn liên tiếp luân phiên nằm ngang và thẳng đứng (tức là mỗi đoạn chỉ thay đổi đúng một tọa độ so với đoạn trước).

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 jiT.

Ràng buộc

  • 2N105
  • 0xi,yi109
  • 2TN (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[3,12]) giao với đoạn 0 (nằm ngang, y=10, x[0,10]) với 50=54. Đây là cặp duy nhất thỏa mãn.

Ghi chú

  • Hai đoạn được coi là giao nhau khi chúng cắt nhau tại một điểm nằm hoàn toàn bên trong cả hai đoạn (không phải tại đầu mút).
  • T luôn là số chẵn.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0