Hai tiến trình cùng tăng một biến counter trong bộ nhớ chia sẻ mà không khóa. Mỗi thao tác tăng gồm 3 bước: LOAD (đọc counter vào thanh ghi riêng), INC (tăng thanh ghi), STORE (ghi thanh ghi về counter).
Cho một lịch trình đan xen các bước của hai tiến trình A và B. Mỗi tiến trình có thanh ghi riêng regA, regB. Mô phỏng đúng theo lịch trình rồi in giá trị counter cuối cùng.
Bước được ghi dạng A LOAD, A INC, A STORE, B LOAD, ... counter khởi tạo bằng giá trị cho trước.
counter=0, lịch trình: A LOAD,B LOAD,A INC,A STORE,B INC,B STORE → cả hai đọc 0; A ghi 1; B cũng ghi 1 ⇒ counter=1 (mất 1 lần tăng).
Dòng đầu: c0 m — giá trị khởi tạo và số bước. m dòng tiếp theo: P OP với P ∈ {A,B}, OP ∈ {LOAD,INC,STORE}.
-10^9 ≤ c0 ≤ 10^9, 1 ≤ m ≤ 2000. Lịch trình hợp lệ (LOAD trước INC trước STORE cho mỗi chu kỳ).
Một số nguyên: giá trị counter cuối cùng.
Ví dụ:
Đầu vào:
0 6
A LOAD
B LOAD
A INC
A STORE
B INC
B STORE
Đầu ra:
1
Giải thích:
Đang tải editor...