Mô phỏng bài toán Người đọc - Người ghi (Readers-Writers) với quy tắc:
Cho dãy thao tác, mỗi thao tác một trong: RS (reader start), RE (reader end), WS (writer start), WE (writer end). Trạng thái duy trì: số người đọc đang đọc r, có người ghi đang ghi hay không w.
Quy tắc thực hiện (greedy, không hàng đợi):
RS: cho phép nếu w = 0 (không có người ghi) → r += 1, thành công; ngược lại bị chặn (không đổi).RE: nếu r > 0 → r −= 1 (thành công); ngược lại bỏ qua.WS: cho phép nếu r = 0 và w = 0 → w = 1, thành công; ngược lại bị chặn.WE: nếu w = 1 → w = 0 (thành công); ngược lại bỏ qua.In ra hai số cách nhau dấu cách: số thao tác bị chặn (RS hoặc WS không vào được), và số người đọc đang đọc ở cuối.
Ví dụ: RS, RS, WS(bị chặn vì r=2), RE, RE, WS(ok). Bị chặn=1, r cuối=0.
Dòng đầu: Q (số thao tác). Q dòng tiếp, mỗi dòng một mã thao tác: RS, RE, WS, WE.
1 ≤ Q ≤ 100000.
Hai số: số thao tác bị chặn, số người đọc đang đọc ở cuối.
Ví dụ:
Đầu vào:
6
RS
RS
WS
RE
RE
WS
Đầu ra:
1 0
Giải thích:
Đang tải editor...