LQDOJ CUP 2022 - Round 4 - COMPRESS

Xem PDF




Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2400 (p) Thời gian: 3.0s Bộ nhớ: 512M Input: COMPRESS.inp Output: COMPRESS.out

Quang được giao cho một việc, đó là lưu lại một hoán vị \(p\) của dãy số nguyên \((1,2,\ldots,n)\). Do cảm thấy việc này rất nhàm chán nên Quang đã nén hoán vị này theo một cách mà Quang tự nghĩ ra. Cách nén của Quang là chọn một số nguyên \(k\) và chỉ lưu lại tổng các đoạn con liên tiếp độ dài \(k\) của \(p\). Nói cách khác thì bây giờ Quang có một dãy số nguyên \(s = (s_{1}, s_{2}, \ldots, s_{n - k + 1})\), với

  • \(s_{1} = p_{1} + p_{2} + \ldots + p_{k}\)
  • \(s_{2} = p_{2} + p_{3} + \ldots + p_{k + 1}\)
  • \(\ldots\)
  • \(s_{n - k + 1} = p_{n - k + 1} + p_{n - k + 2} + \ldots + p_{n}\)

Quang nhanh chóng nhận ra là cách nén của anh ấy có gì đó không đúng. Cách nén trên bị một vấn đề là có thể có nhiều hoán vị có thể cùng được nén thành một dãy số. Do vậy Quang cần lưu thêm một số \(x\), có nghĩa là trong các hoán vị nén thành dãy \(s\), thì hoán vị \(p\) là hoán vị bé thứ \(x\) theo thứ tự từ điển. Do Quang có thể nhầm lẫn nên đôi khi không thể tìm thấy hoán vị thỏa mãn.

Bạn hãy giúp Quang viết một chương trình tìm hoán vị \(p\) thỏa mãn yêu cầu trên.

Input

  • Dòng đầu tiên chứa số nguyên \(t\) \((1 \leq t \leq 100000)\) là số lượng test.
  • Tiếp theo là \(t\) test. Mỗi test có định dạng sau:
    • Dòng đầu tiên chứa ba số nguyên \(n\), \(k\)\(x\) \((2 \leq n \leq 250000, 2 \leq k \leq \min(n, 6), 1 \leq x \leq 10^{18})\) .
    • Dòng tiếp theo chứa \(n - k + 1\) số nguyên \(s_{1}, s_{2}, \ldots s_{n - k + 1}\) \((1 \leq s_{i} \leq 1500000)\) là các phần tử của dãy \(s\).
  • Tổng giá trị \(n\) trong các test không vượt quá \(250000\).

Output

  • Với mỗi test, in ra trên một dòng \(n\) số nguyên là hoán vị thỏa mãn. Nếu không tồn tại, in ra \(-1\).

Scoring

  • Subtask \(1\) (\(20\%\) số điểm): \(k = 2\), \(n \leq 5000\) và tổng giá trị \(n\) trong các test không vượt quá \(5000\).
  • Subtask \(2\) (\(20\%\) số điểm): \(k = 2\), \(n \leq 100000\) và tổng giá trị \(n\) trong các test không vượt quá \(100000\).
  • Subtask \(3\) (\(30\%\) số điểm): \(k = 3\), \(n \leq 100000\) và tổng giá trị \(n\) trong các test không vượt quá \(100000\).
  • Subtask \(4\) (\(30\%\) số điểm): Không có ràng buộc gì thêm.

Example

Test 1

Input
2
5 3 1
6 10 11
5 3 2
6 10 11
Output
1 3 2 5 4
-1
Note
  • Chỉ có duy nhất một hoán vị thỏa mãn là \((1, 3, 2, 5, 4)\).

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: