Cho bộ bài gồm n
lá bài được xếp thành dãy thứ tự từ 1 tới n, đầu tiên người ta ghi vào mỗi lá
bài một số nguyên là số thứ tự ban đầu của lá bài đó. Xét phép tráo S(i,m,j):
lấy ra khỏi bộ bài m lá liên tiếp bắt đầu từ lá bài thứ i, sau đó chèn m lá bài
này vào trước lá bài thứ j trong số n – m lá bài còn lại 1≤i, j≤n
– m
+1. Quy ước rằng nếu j=n-m+1 thì m lá bài này sẽ
đưa vào cuối dãy.
Ví dụ với n=9:
Bộ bài ban đầu: (1, 2, 3, 4,
5, 6, 7, 8, 9)
Thực hiện S(1,5,2): (1,
2, 3, 4, 5, 6, 7, 8,9) ® (6,
1, 2, 3, 4, 5, 7, 8, 9)
Thực hiện tiếp S(5,4,6): (6,
1, 2, 3, 4, 5, 7, 8, 9) ®
(6,1,2,3,9,4,5,7,8)
Thực hiện tiếp S(8,2,1): (6,1,2,3,9,4,5,7,8)
® (7,8,6,1,2,3,9,4,5)
Yêu
cầu:
Hãy cho biết số ghi trên k lá bài đầu tiên của bộ bài (k≤n)
sau khi thực hiện x phép tráo bài cho trước.
Dữ
liệu: Vào từ file văn bản CARDS.INP
+ Dòng 1: Chứa 3 số nguyên
dương n, k, x (n≤105, k≤32,
x≤105)
+ x dòng tiếp theo, mỗi
dòng ghi ba số nguyên i, m, j tương ứng với một phép tráo
S(i,m,j)
Kết
quả:
ghi ra file văn bản CARDS.OUT một dòng chứa k số nguyên, số thứ i
là số ghi trên lá bài thứ i sau khi thực hiện x
phép tráo đã cho.
Các số trên một dòng của
Input/Output files được/phải ghi cách nhau một dấu cách.
Ví
dụ:
CARDS.INP
|
CARDS.OUT
|
9
2 3
1
5 2
5
4 6
8
2 1
|
7
8
|
Không có nhận xét nào:
Đăng nhận xét