Trang bị áo giáp

Đề bài

Mô tả

n người lính và m chiếc áo giáp. Người lính thứ i mong muốn áo giáp cỡ ai, nhưng có thể mặc bất kỳ áo giáp nào có cỡ trong đoạn [aix,ai+y] với x,y là hai số nguyên không âm cho trước. Chiếc áo giáp thứ j có cỡ bj.

Mỗi áo giáp chỉ được dùng cho tối đa một người lính, và mỗi người lính cũng chỉ mặc tối đa một áo giáp. Hãy chia áo giáp sao cho số người lính được trang bị áo giáp là lớn nhất, và in ra một phương án ghép cặp đạt được số lượng đó.

Dữ liệu vào

  • Dòng 1: bốn số nguyên n, m, x, y.
  • Dòng 2: n số nguyên a1,a2,,an theo thứ tự không giảm.
  • Dòng 3: m số nguyên b1,b2,,bm theo thứ tự không giảm.

Dữ liệu ra

  • Dòng đầu: số nguyên k — số lượng người lính được trang bị áo giáp lớn nhất.
  • k dòng tiếp theo, mỗi dòng gồm hai số nguyên ui vi nghĩa là người lính số ui mặc áo giáp số vi. Các ui phải đôi một khác nhau, các vi cũng phải đôi một khác nhau.

Nếu có nhiều phương án tối ưu, in ra một phương án bất kỳ.

Ràng buộc

  • 1n,m105
  • 0x,y109
  • 1ai,bj109

Ví dụ

Input Output Giải thích
5 3 0 0
1 2 3 3 4
1 3 5
2
1 1
3 2
x=y=0 nên áo giáp phải khớp đúng cỡ. Người lính 1 (cỡ 1) ⟶ áo giáp 1; người lính 3 (cỡ 3) ⟶ áo giáp 2. Áo giáp 3 (cỡ 5) không khớp ai. Có thể đổi người lính 3 thành người lính 4 vì cả hai đều cỡ 3.
3 3 2 2
1 5 9
3 5 7
3
1 1
2 2
3 3
Mọi người lính đều mặc vừa áo giáp tương ứng vì độ chênh không quá 2.

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