trang chủ / đề bài / rectsquare

Ghép hình vuông từ hình chữ nhật

Đề bài

Mô tả

Cho n hình chữ nhật, đánh số từ 1 đến n. Các đỉnh của hình chữ nhật có tọa độ nguyên, các cạnh song song với trục Ox và Oy. Các hình chữ nhật có thể chạm nhau nhưng không chồng lên nhau, tức là không có điểm nào nằm trong phần trong của hai hình chữ nhật trở lên.

Hãy xác định xem có tồn tại một tập con khác rỗng các hình chữ nhật mà hợp của chúng đúng bằng một hình vuông hay không. Cụ thể, cần tìm một tập con và một hình vuông sao cho mọi điểm thuộc hình vuông (kể cả biên) đều thuộc ít nhất một hình chữ nhật trong tập con (kể cả biên), và mọi điểm thuộc một hình chữ nhật trong tập con (kể cả biên) đều thuộc hình vuông (kể cả biên).

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên n, số hình chữ nhật.
  • Dòng thứ i trong n dòng tiếp theo chứa bốn số nguyên x1,y1,x2,y2, lần lượt là tọa độ góc dưới trái và góc trên phải của hình chữ nhật thứ i.

Dữ liệu ra

Nếu tồn tại tập con thỏa mãn, dòng đầu in YES và số k là số hình chữ nhật trong tập con, cách nhau một dấu cách; dòng thứ hai in k chỉ số của các hình chữ nhật đó theo thứ tự bất kỳ. Nếu có nhiều đáp án, in một đáp án bất kỳ.

Nếu không tồn tại, in NO.

Ràng buộc

  • 1≤n≤105
  • 0≤x1<x2≤3000, 0≤y1<y2≤3000
  • Không có hai hình chữ nhật nào chồng lên nhau.

Ví dụ

Input Output Giải thích
4
0 0 1 9
1 0 9 1
1 8 9 9
8 1 9 8
NO Bốn hình chữ nhật tạo thành một khung viền 9×9 bị khoét rỗng phần giữa 7×7, không có tập con nào ghép thành hình vuông.
9
0 0 1 9
1 0 9 1
1 8 9 9
8 1 9 8
2 2 3 6
3 2 7 3
2 6 7 7
5 3 7 6
3 3 5 6
YES 5
5 6 7 8 9
Năm hình chữ nhật 5..9 ghép thành hình vuông với góc dưới trái (2,2) và góc trên phải (7,7). Ba hình 6,8,9 cũng ghép thành hình vuông từ (3,2) đến (7,6), đó cũng là một đáp án đúng. Bốn hình 1..4 có bao là hình vuông 9×9 nhưng phần giữa bị trố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