[COCI0607 - Contest 03] Bài 6: LISTA

Xem PDF

Nộp bài

Điểm: 100 (thành phần)
Thời gian: 1.0s
Bộ nhớ: 1G
Input: bàn phím
Output: màn hình

Tác giả:
Dạng bài

Mirko nhận được quà sinh nhật từ cô của anh ấy ở Mỹ - mộ danh sách liên kết đôi (như hình dưới). Danh sách gồm ~N~ nút dược đánh số từ 1 tới ~N~. 2 loại di chuyển có thể được hoàn thành trên danh sách là:

A) Di chuyển nút X đến trước nút Y.

B) Di chuyển nút X ra sau nút Y.

nah

Mirko đã chơi với đồ chơi của mình hàng giờ, viết các bước di chuyển cho mỗi mảnh giấy do đố anh ấy có thể xây dựng lại trạng thái ban đầu của danh sách (nút 1 đến ~N~ theo thứ tự từ trái sang phải).

Khi anh ấy quyết định xây dựng lại danh sách, Mirko đã ngạc nhiên khi phát hiện ra không có cách đơn giản nào để có thể đảo ngược các bước di chuyển và khôi phục lại trạng thái ban đầu. Mirko không thể biết nút X ở đâu trước mỗi lần di chuyển, chỉ biết nó kết thúc ở đâu.

Mirko vẫn đang hồi phục lại sau cú sốc, bạn hãy viết một chương trinh để tìm đoạn di chuyển nhỏ nhất để khôi phục lại trạng thái ban đầu của danh sách từ nhật ký của Mirko

Input

Dòng đầu tiên gồm 2 số ~N~ và ~M~ (~2 <= N <+ 500000, 0 <= M <= 100000~), số lượng nút và số bước di chuyển của Mirko.

M dòng tiếp theo chứa mô tả về các bước đi của Mirko - loại di chuyển ('A' hoặc 'B') và 2 số nguyên ~X~, ~Y~.

Output

In ra số bước di chuyển ít nhất (gọi số này là ~K~) trên một dòng.

~K~ dòng tiếp theo chứa mô tả về bước di chuyển có cùng định dạng như Input.

Note: Dãy không nhất thiết phải là duy nhất.

Sample Input 1

2 1
A 2 1

Sample Output 1

1
A 1 2

Sample Input 2

4 3
B 1 2
A 4 3
B 1 4

Sample Output 2

2
A 1 2
B 4 3

Sample Input 3

6 5
A 1 4
B 2 5
B 4 2
B 6 3
A 3 5

Sample Output 3

3
A 4 5
B 6 5
A 2 3

Bình luận đầu tiên

Bình luận

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