Електронна охорона документів#3024

Електронна охорона документів

1 секунда
64 мегабайти
Дуже легка

Корпорація Tyrell використовує сучасні електронні системи документообігу, які контролюють усі аспекти створення, перегляду, редагування та розповсюдження документів. Безпека документів управляється за допомогою списків контролю доступу (ACL). ACL визначає набір суб'єктів, які мають доступ до документа, і для кожного суб'єкта задає набір прав. Суб'єкти позначаються великими латинськими літерами й можуть бути як окремими користувачами, так і групами. Права позначаються малими літерами; наприклад: (додавання), (видалення), (редагування), (читання).

ACL для документа зберігається разом із цим документом, але також є окремий журнал ACL, що зберігається на окремому сервері логів. Усі документи починаються з порожнього ACL, який не надає жодних прав нікому. Кожного разу, коли ACL для документа змінюється, новий запис заноситься в журнал. Запис має вигляд , де — непорожня множина суб'єктів, — непорожня множина прав, а — це або "+", або "-", або "=". Запис E+R означає надання всіх прав із усім суб'єктам із . Запис E-R означає позбавлення всіх прав із усіх суб'єктів із . Запис E=R означає, що всі суб'єкти з мають рівно права і жодних інших. Запис може бути надлишковим, якщо він надає вже наявне право або забирає право, якого вже немає. Журнали — це списки записів, розділених комами, у хронологічному порядку від найстарішого до найновішого. Записи накопичуються; у разі конфлікту новіші записи перекривають права старіших.

Періодично корпорація Tyrell здійснює перевірки безпеки, використовуючи журнали для обчислення поточного ACL для кожного документа й порівнює його з ACL, фактично збереженим із документом. Відмінності свідчать про порушення безпеки. Ваше завдання — за заданим журналом ACL обчислити поточний ACL.

Вхідні дані

Вхід містить один або кілька журналів ACL, кожен довжиною від до символів, кожен в окремому рядку, після чого йде рядок, що містить лише "#" — це сигнал про кінець вводу. Журнали мають зазначений вище формат і не містять пробілів.

Вихідні дані

Для кожного журналу виведіть рядок, що містить номер журналу (нумерація журналів починається з одиниці), двокрапку, а потім поточний ACL у такому форматі:

(1) У виводі не має бути пробілів;

(2) Суб'єкти виводяться в алфавітному порядку;

(3) Права для кожного суб'єкта виводяться в алфавітному порядку;

(4) Суб'єкти, які не мають поточних прав, не виводяться (навіть якщо вони були у записах журналу), тому ACL може бути порожнім;

(5) Якщо два або більше підряд розташованих суб'єктів мають абсолютно однакові права, ці права відображаються лише один раз — після списку цих суб'єктів.

Приклади

Приклад 1

Loading
Loading