Một "máy đếm" (counter machine) gồm m thanh ghi không âm r0,r1,…,rm−1, tất cả khởi tạo bằng 0. Chương trình điều khiển máy gồm n lệnh, đánh số dòng từ 0 đến n−1, mỗi lệnh thuộc một trong 4 loại:
INC i: tăng ri thêm 1, rồi chuyển sang lệnh kế tiếp (dòng hiện tại +1).DECJZ i L: nếu ri=0 thì nhảy tới dòng L (không thay đổi ri); ngược lại giảm ri đi 1 rồi chuyển sang lệnh kế tiếp.JMP L: nhảy vô điều kiện tới dòng L.HALT: dừng chương trình ngay lập tức.Máy bắt đầu thực thi từ dòng 0. Đề bài đảm bảo chương trình luôn dừng (gặp HALT) sau không quá 2×106 bước thực thi, và mọi đích nhảy L đều là chỉ số dòng hợp lệ (từ 0 đến n−1).
Hãy mô phỏng (thông dịch) chương trình và cho biết giá trị các thanh ghi khi máy dừng.
Ví dụ: Với m=2 và chương trình INC 1, INC 1, INC 1, DECJZ 1 6, INC 0, JMP 3, HALT (7 dòng, đánh số 0..6), máy sẽ chuyển toàn bộ giá trị từ r1 (ban đầu được nạp bằng 3) sang r0 theo từng đơn vị, kết quả cuối cùng r0=3,r1=0, in ra 3 0.
Dòng đầu tiên gồm hai số nguyên m và n (0≤m≤50, 1≤n≤1000) — số thanh ghi và số lệnh.
n dòng tiếp theo là các lệnh của chương trình, theo đúng thứ tự dòng 0,1,…,n−1, mỗi dòng có dạng INC i, DECJZ i L, JMP L hoặc HALT (0≤i<m, 0≤L≤n−1).
In ra một dòng duy nhất gồm m số nguyên là giá trị cuối cùng của r0,r1,…,rm−1 theo đúng thứ tự, cách nhau bởi đúng một dấu cách. Nếu m=0, in ra một dòng trống.
Ví dụ:
Đầu vào:
1 1
HALT
Đầu ra:
0
Đầu vào:
2 7
INC 1
INC 1
INC 1
DECJZ 1 6
INC 0
JMP 3
HALT
Đầu ra:
3 0
Đang tải editor...