问题3716--[APIO2012]守卫guard

3716: [APIO2012]守卫guard

时间限制: 1 Sec  内存限制: 512 MB
提交: 0  解决: 0
[提交] [状态] [讨论版] [命题人:]

题目描述

APIO王国正被忍者攻击!忍者非常厉害,因为他们在进攻的时候可以躲在阴影里面使得其他人看不到他们。整个王国除了国王居住的APIO城堡以外都已经被占领了。在城堡前,有N个灌木丛,从1到N编号,有K个忍者躲在恰好K个灌木丛后面。APIO城堡里有M个守卫。守卫i监视着编号从Ai到Bi的连续的一段灌木丛。每个守卫都向国王报告在他所监视范围内是否有忍者出现。作为国王的仆人,你需要告诉国王,基于守卫的报告,哪些灌木丛后面一定躲着一个忍者,即对于任何和守卫报告不矛盾的忍者排列方式,在这个灌木丛后面都躲着一个忍者。 你需要写一个程序来输出所有的这些灌木丛的编号。

输入

从标准输入读入数据。 第一行包含三个用空格分隔的整数N,K,M,N是灌木丛的个数,K是忍者的个数,M是守卫的个数。 接下来M行,每行描述一个守卫的信息。其中的第i行包含三个整数Ai, Bi, Ci,表示第i个守卫的监视范围是从Ai到Bi(Ai≤Bi)。Ci是0或者1,若是0表示范围内没有看到忍者,1表示范围内有至少一个忍者。 输入数据保证至少存在一种忍者排列方式满足所有条件。

输出

输出到标准输出。 若存在灌木丛,在其后面一定躲着忍者,则将这些一定躲着忍者的灌木丛按照编号从小到大的顺序依次输出,每个一行。即若有X个这样的灌木丛,则需要输出X行。若不存在,则输出一行一个“-1”,不包含引号。

样例输入

【样例输入1】
5 3 4
1 2 1
3 4 1
4 4 0
4 5 1

【样例输入2】
5 1 1
1 5 1

样例输出

【样例输出1】
3
5

【样例输出2】
-1

来源/分类


[提交] [状态]