Gộp K mảng đã sắp xếp

Xem dạng PDF

Gửi bài giải

Điểm: 600,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Nguồn bài:
HungTV
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho ~K~ mảng số nguyên, mỗi mảng gồm ~N~ phần tử đã được sắp xếp theo thứ tự tăng dần. Hãy gộp tất cả ~K~ mảng này thành một mảng duy nhất và vẫn đảm bảo thứ tự tăng dần.

Yêu cầu: Khối lượng dữ liệu rất lớn, nếu bạn gộp tất cả rồi mới dùng hàm sort() thì sẽ bị quá thời gian. Hãy thiết kế thuật toán sử dụng Hàng đợi ưu tiên (Priority Queue) để tối ưu.

Dữ liệu

  • Dòng đầu tiên chứa hai số nguyên dương ~K~ và ~N~ (~1 \le K, N \le 500~).
  • ~K~ dòng tiếp theo, mỗi dòng chứa ~N~ số nguyên ~A_{i, j}~ (~-10^9 \le A_{i, j} \le 10^9~), phân cách nhau bởi khoảng trắng, đại diện cho một mảng đã được sắp xếp tăng dần.

Kết quả

In ra một dòng duy nhất chứa ~K \times N~ số nguyên của mảng sau khi đã gộp, phân cách nhau bởi một khoảng trắng.

Ví dụ

Input
3 4
1 4 7 10
2 5 8 11
3 6 9 12
Output
1 2 3 4 5 6 7 8 9 10 11 12
Giải thích

Có 3 mảng, mỗi mảng 4 phần tử. Lấy lần lượt các phần tử nhỏ nhất từ đầu các mảng ta sẽ thu được dãy tăng dần hoàn chỉnh.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.