CF496E Distributing Parts
题目描述
你是一部新音乐剧的助理导演。这部音乐剧包含 $n$ 个音乐角色,每个角色必须由恰好一名演员来演绎。
试镜结束后,导演挑选了 $m$ 名可参与这部剧的演员。你的任务是将这些角色分配给演员。不过,分配过程存在一些限制条件。
首先,每位演员都有特定的音域范围,有些角色的音域超出了其能力范围,因此该演员无法演唱这些角色。
具体来说,对于每位演员,有两个整数 $c_i$ 和 $d_i$(满足 $c_i \leq d_i$),分别代表该演员能演唱的最低音高和最高音高。
对于每个角色,同样有两个整数 $a_j$ 和 $b_j$(满足 $a_j \leq b_j$),分别代表该角色所包含的最低音高和最高音高。
只有当 $c_i \leq a_j \leq b_j \leq d_i$ 时,即角色的所有音高都在演员的音域范围内,第 $i$ 名演员才能演绎第 $j$ 个角色。
根据合同规定,第 $i$ 名演员最多只能演绎 $k_i$ 个角色。此外,你可以不将任何角色分配给某些演员(这些演员届时将参与群众场景的演出)。
排练将在两小时后开始,你需要尽快完成角色分配工作!
输入格式
第一行包含一个整数 $n$,表示音乐剧中的角色数量($1 \leq n \leq 10^5$)。
接下来 $n$ 行,每行包含两个用空格分隔的整数 $a_j$ 和 $b_j$ ,分别表示第$j$个角色的音高范围($1 \leq a_j \leq b_j \leq 10^9$)。
再下一行包含一个整数 $m$,表示参与该剧的演员数量($1 \leq m \leq 10^5$)。
接下来 $m$ 行,每行包含三个用空格分隔的整数 $c_i$、$d_i$ 和 $k_i$,分别表示第 $i$ 名演员的音域范围以及该演员最多可演绎的角色数量($1 \leq c_i \leq d_i \leq 10^9$,$1 \leq k_i \leq 10^9$)。
输出格式
如果存在满足上述所有条件的角色分配方案,在第一行输出一个单词 `YES`。
在第二行输出 $n$ 个用空格分隔的整数,其中第 $i$ 个整数表示负责演绎第 $i$ 个角色的演员编号。若存在多种正确的分配方案,输出任意一种即可。
如果不存在符合条件的分配方案,输出一个单词 `NO`。