Ngôn ngữ cổ

Đề bài

Mô tả

Người ta tìm được một xấp các trang bị xáo trộn của một cuốn sách. May mắn là tất cả các trang gốc đều còn đủ, và mỗi trang đều có ghi số thứ tự của nó. Sau khi ghép lại theo số trang, người ta nhận ra đây là một cuốn từ điển của một nền văn minh cổ.

Nền văn minh này dùng một bảng chữ cái là tập con của bảng chữ cái tiếng Anh (các chữ cái thường), nhưng thứ tự của các chữ cái trong bảng chữ cái của họ không giống thứ tự trong tiếng Anh.

Vì là từ điển nên khi ghép tất cả các trang lại theo đúng số trang tăng dần, danh sách toàn bộ các từ (đọc lần lượt từ trang có số nhỏ nhất đến trang có số lớn nhất, và trong mỗi trang đọc theo thứ tự các từ được ghi) phải được sắp xếp không giảm theo thứ tự từ điển ứng với bảng chữ cái cổ này.

Cho nội dung các trang, hãy khôi phục lại thứ tự bảng chữ cái của nền văn minh cổ. Nếu tập hợp các trang này không thể tạo thành một từ điển hợp lệ, hãy in ra IMPOSSIBLE.

Thứ tự từ điển được định nghĩa như thông thường: so sánh hai từ theo từng ký tự từ trái sang phải theo thứ tự bảng chữ cái cổ; nếu một từ là tiền tố thực sự của từ kia thì từ ngắn hơn được coi là nhỏ hơn.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nk — số trang tìm được và số từ trên mỗi trang.
  • Tiếp theo là n nhóm. Mỗi nhóm gồm:
    • Một dòng chứa số nguyên pi — số thứ tự của trang.
    • k dòng, mỗi dòng chứa một từ được ghi trên trang số pi (chỉ gồm các chữ cái Latinh in thường).

Dữ liệu ra

In ra một xâu là thứ tự bảng chữ cái cổ đã khôi phục (chỉ gồm những chữ cái thực sự xuất hiện trong các từ). Nếu có nhiều đáp án, in ra một đáp án bất kỳ.

Nếu không tồn tại thứ tự bảng chữ cái nào phù hợp, in ra IMPOSSIBLE.

Ràng buộc

  • 1n,k103
  • 0pi<103, các số trang đôi một khác nhau.
  • Mỗi từ có độ dài tối đa 100 ký tự.

Ví dụ

Input Output Giải thích
3 3
2
b
b
bbac
0
a
aca
acba
1
ab
c
ccb
acb Ghép theo số trang 0,1,2 được danh sách từ: a, aca, acba, ab, c, ccb, b, b, bbac. So sánh các cặp liên tiếp suy ra a đứng trước c, c đứng trước b. Một thứ tự hợp lệ là acb.
2 2
1
bb
b
0
aa
a
IMPOSSIBLE Ghép theo số trang được: aa, a, bb, b. Cặp (aa, a): từ dài hơn đứng trước tiền tố của nó nên danh sách không thể được sắp xếp — không có bảng chữ cái nào phù hợ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.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