#57. Sắp xếp đoạn mã (Mã bài: CODE)

Bộ nhớ: 256 MiB Thời gian: 500 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Có ba chuỗi A, B, C gồm các ký tự thường. Bạn cần xử lý q truy vấn, mỗi truy vấn gồm hai số l, r xác định đoạn con từ vị trí l đến r trong cả ba chuỗi.

Yêu cầu: Với mỗi truy vấn:

  • Trích đoạn con từ A, B, C trong đoạn [l, r] .
  • Sắp xếp ba đoạn con theo thứ tự từ điển tăng dần.
  • Gán lại các đoạn đã sắp xếp vào vị trí tương ứng trong chuỗi ban đầu.

Sau tất cả truy vấn, in ra ba chuỗi A, B, C đã được cập nhật.

Dữ liệu:

  • Dòng đầu: hai số nguyên n, q ( 1 \le n, q \le 10^5 ).
  • Ba dòng tiếp theo: chuỗi A, B, C gồm n ký tự thường.
  • q dòng tiếp theo: mỗi dòng chứa hai số l, r .

Kết quả: Ba dòng: chuỗi A, B, C sau khi xử lý tất cả truy vấn.

Ví dụ:

Dữ liệu:

6 6
aabbcc
bcacab
cbcaba
1 1
2 2
3 3
4 4
5 5
6 6

Kết quả:

aaaaaa
bbbbbb
cccccc

Dữ liệu:

3 1
aba
aab
aac
1 3

Kết quả:

aab
aac
aba

Giới hạn:

  • Subtask #1: 30% số điểm với n, q \le 1000 .
  • Subtask #2: 30% số điểm với n, q \le 10{,}000 .
  • Subtask #3: 40% số điểm còn lại không có ràng buộc thêm.