Chia đội

Đề bài

Mô tả

3n học sinh mang số hiệu từ 1 đến 3n. Sau đợt sát hạch, ta có bảng xếp hạng là một hoán vị của 1..3n: học sinh đứng ở vị trí thứ i được cho trước (không có hai học sinh cùng hạng).

Các đội (mỗi đội gồm đúng 3 người) được thành lập theo quy tắc sau. Khi vẫn còn học sinh chưa có đội, học sinh có thứ hạng tốt nhất trong số những người còn lại sẽ trở thành đội trưởng của một đội mới. Đội trưởng này tự chọn ra 2 người còn lại làm đồng đội của mình dựa theo danh sách ưu tiên của bản thân. Danh sách ưu tiên của mỗi học sinh là một hoán vị của 3n1 học sinh còn lại (tất cả trừ chính mình): khi đến lượt làm đội trưởng, người đó chọn 2 học sinh còn lại đứng đầu trong danh sách ưu tiên của mình.

Cho bảng xếp hạng và cách chia n đội đã hình thành, liệt kê theo đúng thứ tự chúng được tạo ra. Với một học sinh k cho trước, hãy tìm một danh sách ưu tiên của học sinh k sao cho quá trình trên tạo ra đúng cách chia đội đã cho. Nếu có nhiều danh sách hợp lệ, in ra danh sách nhỏ nhất theo thứ tự từ điển.

Việc so sánh theo thứ tự từ điển được thực hiện trên dãy số (không phải trên chuỗi ký tự): dãy a nhỏ hơn dãy b nếu tồn tại vị trí i sao cho ai<biaj=bj với mọi j<i. Ví dụ dãy 1 9 10 nhỏ hơn dãy 1 10 9.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n: số đội.
  • Dòng thứ hai chứa 3n số nguyên là bảng xếp hạng (số thứ i là số hiệu học sinh xếp hạng thứ i).
  • n dòng tiếp theo, mỗi dòng chứa 3 số hiệu học sinh mô tả một đội. Các thành viên trong một đội có thể liệt kê theo thứ tự bất kỳ, nhưng các đội được liệt kê theo thứ tự chúng được tạo ra. Dữ liệu đảm bảo cách chia đội là hợp lệ, tức là có thể tạo ra được từ bảng xếp hạng theo quy tắc mô tả ở trên.
  • Dòng cuối chứa số nguyên k: số hiệu học sinh cần tìm danh sách ưu tiên.

Dữ liệu ra

In ra 3n1 số: danh sách ưu tiên nhỏ nhất theo thứ tự từ điển của học sinh số k.

Ràng buộc

  • 1n105
  • 1k3n
  • Bảng xếp hạng và các đội là các số hiệu hợp lệ, mỗi học sinh thuộc đúng một đội.

Ví dụ

Input Output Giải thích
3
5 4 1 2 6 3 7 8 9
5 6 2
9 3 4
1 7 8
4
2 3 5 6 9 1 7 8 Học sinh 4 (hạng 2) là đội trưởng đội thứ hai. Khi đó đội 1 (5, 6, 2) đã hình thành nên 5,6,2 tự do đặt ở đâu cũng được; hai đồng đội 39 phải đứng trước các học sinh còn lại là 1,7,8. Dãy nhỏ nhất là 2 3 5 6 9 1 7 8.
3
5 4 1 2 6 3 7 8 9
5 6 2
9 3 4
1 7 8
8
1 2 3 4 5 6 7 9 Học sinh 8 không bao giờ làm đội trưởng (đội trưởng đội 3 là học sinh 1), nên danh sách ưu tiên của 8 không bị ràng buộc: chỉ cần liệt kê tất cả học sinh khác theo thứ tự tăng dần.
2
4 1 3 2 5 6
4 6 5
1 2 3
4
5 6 1 2 3 Học sinh 4 (hạng 1) là đội trưởng đội 1. Hai đồng đội 5,6 phải đứng trước 1,2,3, cho dãy nhỏ nhất 5 6 1 2 3.

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