K. 公寓钥匙

Juggling Keys

时间限制:5 秒 · 内存限制:1024 MiB

原题:NWERC 2025 J · 查看官方英文原文(英文 PDF 也已作为本题附件提供)

题目描述

nn 个人共住一间公寓,一共有 kk 把钥匙。已知全部 qq 次外出的人员、离开时间和返回时间。你需要决定每次外出的人是否带上一把钥匙。钥匙随外出的人离开,并在此人回来时带回公寓。

当一个人回来时,如果公寓里还有其他人,就可以按门铃让对方开门;如果公寓里没有其他人,这个人必须自己携带钥匙,否则就会被锁在门外。每次出发时,也必须有可供携带的钥匙,不能使用仍被其他外出者携带的钥匙。

请为所有外出安排是否带钥匙,使每个人都能按时进入公寓,或判断不存在这样的安排。

输入格式

第一行包含 nn、kk、qq(1≤k≤n≤1000001 \leq k \leq n \leq 100000,1≤q≤1000001 \leq q \leq 100000)。

随后 qq 行,每行包含 pp、ll、rr(1≤p≤n1 \leq p \leq n,0≤l<r≤1090 \leq l < r \leq 10^{9}),表示第 pp 个人在 ll 时刻离开,在 rr 时刻返回。

任一时刻至多发生一次离开或返回。同一个人的外出时间段不会相交,也不会端点相接。第一次外出前所有人及所有钥匙都在公寓中。

输出格式

如果存在合法安排,输出长度为 qq、只包含 00 和 11 的字符串。第 jj 个字符对应输入中的第 jj 次外出:11 表示带一把钥匙,00 表示不带钥匙。

如果不存在合法安排,输出 impossible。有多个合法安排时输出任意一个即可。

样例

样例输入 1

3 2 5
3 0 9
1 2 18
2 4 7
3 12 22
2 14 20

样例输出 1

01110

样例输入 2

2 1 2
1 2 4
2 1 3

样例输出 2

01

样例输入 3

2 1 3
1 1 5
2 2 3
2 4 6

样例输出 3

impossible

原题版权归原作者及相应赛事评委会所有,采用 CC BY-SA 4.0 许可。中文译文为本练习赛整理,按相同许可发布。题号及中文标题作了调整,输入约束、样例和判题要求依照官方原题;图示及完整英文叙述请参阅英文原文附件。