Mô hình Bức tường Trung Hoa (Chinese Wall / Brewer–Nash) ngăn xung đột lợi ích khi tư vấn cho nhiều công ty cạnh tranh. Mỗi đối tượng dữ liệu thuộc về một công ty (company), và các công ty được nhóm vào các lớp xung đột lợi ích — COI class (các công ty cạnh tranh trực tiếp nằm cùng một lớp).
Quy tắc: một chủ thể được đọc tự do các đối tượng thuộc các lớp COI mà mình chưa từng đụng tới. Nhưng ngay khi chủ thể đọc một đối tượng của công ty C trong lớp K, lớp K coi như bị khoá vào công ty C đối với chủ thể đó: từ đó chủ thể chỉ được tiếp tục đọc thêm đối tượng của công ty C trong lớp K, mọi yêu cầu đọc đối tượng của công ty khác trong cùng lớp K đều bị từ chối. Trạng thái "bức tường" được theo dõi riêng cho từng chủ thể.
Cho danh sách đối tượng (kèm công ty và lớp COI của nó) và một dãy yêu cầu truy cập tuần tự dạng subject object, hãy xác định mỗi yêu cầu là ALLOW hay DENY, biết rằng các yêu cầu được xử lý lần lượt theo đúng thứ tự cho trong input và trạng thái bức tường chỉ cập nhật khi yêu cầu được ALLOW.
Ví dụ
Input:
3
BankA_Report BankA Banking
BankB_Report BankB Banking
OilX_Report OilX Oil
5
Tom BankA_Report
Tom OilX_Report
Tom BankB_Report
Tom BankA_Report
Jerry BankB_Report
Output:
ALLOW
ALLOW
DENY
ALLOW
ALLOW
Giải thích: Tom đọc BankA_Report trước, khoá lớp Banking vào BankA; đọc OilX_Report thuộc lớp khác nên không xung đột; đọc BankB_Report bị từ chối vì Banking đã khoá vào BankA; đọc lại BankA_Report vẫn được vì cùng công ty đã khoá. Jerry là chủ thể khác, chưa từng truy cập nên yêu cầu đầu tiên của Jerry luôn được phép.
Dòng 1: số nguyên n — số đối tượng dữ liệu (1≤n≤300). n dòng tiếp theo dạng objectName company coiClass.
Dòng tiếp theo: số nguyên q — số yêu cầu truy cập theo thứ tự thời gian (0≤q≤500), rồi q dòng subject object.
In ra q dòng, mỗi dòng ALLOW hoặc DENY cho yêu cầu tương ứng theo đúng thứ tự. Nếu object không tồn tại trong danh sách đối tượng, in DENY.
Ví dụ:
Đầu vào:
3
BankA_Report BankA Banking
BankB_Report BankB Banking
OilX_Report OilX Oil
5
Tom BankA_Report
Tom OilX_Report
Tom BankB_Report
Tom BankA_Report
Jerry BankB_Report
Đầu ra:
ALLOW
ALLOW
DENY
ALLOW
ALLOW
Đầu vào:
1
A_Report A Fin
2
X A_Report
X Ghost
Đầu ra:
ALLOW
DENY
Đang tải editor...