trang chủ / bài tập / antlines

Anton và các đường thẳng

Đề bài

Mô tả

Cho n đường thẳng trên mặt phẳng, đường thứ i có phương trình y=ki·x+bi.

Cho hai giá trị x1<x2, xét dải mở giới hạn bởi hai đường thẳng đứng x=x1x=x2. Hãy xác định xem có tồn tại hay không hai đường thẳng khác nhau cắt nhau tại một điểm nằm hoàn toàn bên trong dải này, tức là điểm cắt (x,y) thỏa mãn x1<x<x2 (dấu bất đẳng thức ngặt).

Nói cách khác, cần kiểm tra có tồn tại chỉ số 1i<jn và điểm (x,y) sao cho:

  • y=ki·x+bi (điểm thuộc đường thứ i),
  • y=kj·x+bj (điểm thuộc đường thứ j),
  • x1<x<x2.

Các giao điểm nằm đúng trên biên (x=x1 hoặc x=x2) không được tính.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là số đường thẳng.
  • Dòng thứ hai chứa hai số nguyên x1x2 xác định dải cần xét.
  • n dòng tiếp theo, dòng thứ i chứa hai số nguyên kibi mô tả đường thẳng thứ i.

Các đường thẳng đôi một phân biệt: với mọi ij thì kikj hoặc bibj.

Dữ liệu ra

In ra YES nếu tồn tại ít nhất một giao điểm của hai đường thẳng phân biệt nằm hoàn toàn bên trong dải, ngược lại in ra NO.

Ràng buộc

  • 2n100000
  • 1000000x1<x21000000
  • 1000000ki,bi1000000

Ví dụ

Input Output Giải thích
4
1 2
1 2
1 0
0 1
0 2
NO Có các giao điểm nằm đúng trên biên của dải nhưng không có giao điểm nào nằm hẳn bên trong.
2
1 3
1 0
-1 3
YES Hai đường y=xy=x+3 cắt nhau tại x=1.5, nằm trong khoảng (1,3).
2
1 3
1 0
0 3
NO Hai đường cắt nhau tại x=3, đúng trên biên phải nên không được tính.

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