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

Bắt tay

Đề bài

Mô tả

n học sinh lần lượt đi vào một phòng học, mỗi lần một người. Khi bước vào, mỗi học sinh sẽ bắt tay chào tất cả những người đang có mặt tự do trong phòng (bắt tay từng người một). Sau khi chào xong, học sinh đó ngồi xuống và ở lại trong phòng đến hết ngày.

Vào bất cứ lúc nào, ba học sinh đang có mặt có thể cùng nhau lập thành một đội để tham gia thi lập trình đồng đội. Đội bắt đầu thi từ thời điểm đó cho đến hết ngày và không bị phân tâm — nghĩa là khi một học sinh mới bước vào chào hỏi, người đó không bắt tay với các thành viên đang thi đấu. Mỗi đội gồm đúng ba học sinh và mỗi học sinh thuộc tối đa một đội. Các đội khác nhau có thể bắt đầu thi vào những thời điểm khác nhau. Một số học sinh có thể làm việc độc lập đến hết ngày mà không tham gia đội nào.

Cho biết học sinh thứ i đã bắt tay với ai người khi bước vào. Hãy khôi phục lại một thứ tự vào phòng của các học sinh sao cho phù hợp với các số ai đã cho, hoặc cho biết không tồn tại thứ tự như vậy.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — số học sinh.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an, trong đó ai là số người mà học sinh thứ i đã bắt tay khi bước vào.

Dữ liệu ra

  • Nếu tồn tại thứ tự thỏa mãn, in ra dòng đầu tiên là Possible, dòng thứ hai in một hoán vị của các số 1,2,,n mô tả thứ tự vào phòng: số i đứng trước số j nghĩa là học sinh thứ i vào trước học sinh thứ j. Nếu có nhiều đáp án, in ra bất kỳ.
  • Nếu không tồn tại, in ra một dòng duy nhất Impossible.

Ràng buộc

  • 1n2·105
  • 0ai<n

Ví dụ

Input Output Giải thích
9
0 2 3 4 1 1 0 2 2
Possible
7 6 9 3 4 8 1 5 2
Một thứ tự hợp lệ. Trong quá trình, tại một số thời điểm ba học sinh có mặt lập thành đội, khiến người vào sau chỉ bắt tay những người còn tự do. Có nhiều đáp án khác cùng đúng.
5
2 1 3 0 1
Possible
4 5 1 3 2
Học sinh 4 (a4=0) vào trước; học sinh 5 (a5=1) bắt tay 1 người; học sinh 1 (a1=2) bắt tay 2 người; học sinh 3 (a3=3) bắt tay 3 người; ba học sinh có mặt lập đội; học sinh 2 (a2=1) chỉ bắt tay 1 người còn tự do.
4
0 2 1 1
Impossible Không có thứ tự nào phù hợp: sau khi đặt được 3 người, học sinh còn lại cần bắt tay đúng 1 người nhưng số người tự do có mặt không thể bằng 1.

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 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