#L4248. 「NordicOI 2019」Thieves and Prisons
「NordicOI 2019」Thieves and Prisons
题目描述
题目译自 NordicOI 2019 T2 「Thieves and Prisons」
有 个小偷和 个监狱。一个小偷要么在逃,要么被关在监狱里。最初,所有小偷都在逃。
一个在逃的小偷可以被警察抓住,然后被关进其中一个监狱。一个监狱里可以有任意数量的小偷。一个在逃的小偷也可以打开一个监狱的门,这样监狱里的所有小偷都会被释放。打开一个空监狱的门是没有意义的,所以这种情况不会发生。
你会得到一个包含 个事件的列表,形式为「贼 被抓住了」或「贼 打开了监狱的门」。你的任务是找到一个对应这些事件的监狱分配方案,或者确定这是不可能的。
输入格式
第一行输入三个整数 , , ,表示小偷的数量、监狱的数量和事件的数量。小偷和监狱的编号分别为 和 。
接下来有 行描述这些事件。每个事件是 C x(贼 被抓住了)或 O x(贼 打开了监狱的门)。
输出格式
输出一个有效的监狱分配方案,包含 个整数,表示每个事件对应的监狱。如果没有方案,输出 IMPOSSIBLE。
样例 1
输入:
3 2 5
C 1
C 2
O 3
O 2
C 1
输出:
1 2 2 1 1
解释:
- 事件1:贼1被抓,关进监狱1
- 事件2:贼2被抓,关进监狱2
- 事件3:贼3打开监狱2的门,释放贼2
- 事件4:贼2打开监狱1的门,释放贼1
- 事件5:贼1再次被抓,关进监狱1
样例 2
输入:
1 1 1
O 1
输出:
IMPOSSIBLE
解释:贼1在事件开始时在逃,不能打开空监狱的门。
数据范围与提示
对于所有输入数据,满足:
详细子任务附加限制及分值如下表所示。
| 子任务 | 分值 | 附加限制 |
|---|---|---|
| 1 | 8 | , |
| 2 | 13 | , |
| 3 | 14 | , |
| 4 | 18 | |
| 5 | 47 |