Wilbur và đánh số điểm

Đề bài

Mô tả

Cho tập n điểm có toạ độ nguyên không âm trên mặt phẳng. Tập điểm có tính chất đóng theo hướng giảm: nếu (x,y) thuộc tập thì mọi điểm (x,y) với 0xx0yy cũng thuộc tập.

Cần đánh số cho n điểm bằng các số nguyên phân biệt từ 1 đến n sao cho cách đánh số là hợp lệ: nếu điểm (x,y) được gán số i thì với mọi điểm (x,y) thuộc tập với xxyy (kể cả khác điểm gốc), số của nó phải i.

Mỗi điểm có giá trị đặc biệt s(x,y)=yx. Cho dãy số nguyên w1,w2,,wn. Hãy tìm một cách đánh số hợp lệ sao cho điểm được gán số i có giá trị đặc biệt đúng bằng wi, tức là điểm số i(xi,yi) thoả yixi=wi.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — số lượng điểm.
  • n dòng tiếp theo, mỗi dòng chứa hai số nguyên xy — toạ độ một điểm trong tập. Các điểm phân biệt; tập đóng theo hướng giảm như mô tả.
  • Dòng cuối chứa n số nguyên w1,w2,,wn.

Dữ liệu ra

  • Nếu tồn tại cách đánh số hợp lệ thoả yêu cầu, in YES trên một dòng, sau đó in n dòng — dòng thứ i chứa toạ độ điểm được gán số i.
  • Nếu không tồn tại, in NO.

Nếu có nhiều cách đánh số hợp lệ, in bất kỳ cách nào.

Ràng buộc

  • 1n100000
  • 0x,y100000
  • 100000wi100000

Ví dụ

Input Output Giải thích
5
2 0
0 0
1 0
1 1
0 1
0 -1 -2 1 0
YES
0 0
1 0
2 0
0 1
1 1
Tập có 5 điểm. Cách đánh số 1:(0,0), 2:(1,0), 3:(2,0), 4:(0,1), 5:(1,1) thoả: (0,0) không bị điểm nào số nhỏ hơn "khống chế", giá trị đặc biệt là 0=w1; tương tự với các điểm còn lại w lần lượt là 1,2,1,0.
3
1 0
0 0
2 0
0 1 2
NO Ba điểm có giá trị đặc biệt 0,1,2, nhưng w=(0,1,2) chứa các giá trị không có trong tập.

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0