在石器时代,有一个大广场,人们快速进出这个广场,广场上的人形成部落。如果一个部落里的人数大于其他任何一个部落里的人数,我们就说这个部落是“危险的”。
现在请你判断是否有“危险的”部落。
这是一道交互题,使用IO交互。
你的程序应该向标准输出中输出命令,从标准输入中读取返回值。每输出一行,都应该刷新缓冲区:
fflush(stdout)
cout<<flush
flush(output)
System.out.flush()
本题只有一个测试点。你可以输出 Getjob
命令,读取一个整数 v , v 的含义如下表所示:
v的取值 | 含义 |
---|---|
0 | 新事件:有一个人进入了广场。(人的编号按照 1,2,⋯ 排序)(第 n 个进入的人编号为 n ) |
>0 | 新事件:编号为v的人离开广场。 |
−1 | 判断有没有“危险的”部落,用 Answer 命令输出答案。 |
−2 | 测试点结束。 |
每一次 v=−1 ,你都需要使用一个 Answer
命令;每个新事件之后,你可以使用 Query
命令获取信息。在v=−1之后,新事件之前,你不应该使用 Query
命令,而应该立即用 Answer
作出回答。
各种命令的含义如下表所示:
命令 | 含义 |
---|---|
Getjob | 评测机会返回下一个 v ,当 v=2 时测试点结束。 |
Query i j | 评测机返回一个整数 s , s=1 表示编号为 i 的人和编号为 j 的人在同一个部落中,s=0 表示他们不在同一个部落中。(i 和 j 可以是已经离开广场的人的编号) |
Answer i | 输出判断有无“危险的”部落的结果。 i=0 表示没有“危险的”部落,否则表示编号为 i 的人所在的部落是“危险的”(编号为 i 的人此时必须还在广场上)。对于这个命令,评测机不会返回任何东西。 |
无
无
无
在每个新事件之后,你的程序最多可以使用 5 次 Query
命令。
数据保证需要使用 Getjob
命令的次数不超过 50000 。
原题样例(右侧为程序输出,左侧为评测机返回内容):
Getjob
0
Getjob
0
Query 1 2
0
Getjob
-1
Answer 0
Getjob
0
Query 2 3
1
Getjob
-1
Answer 2
Getjob
2
Getjob
-1
Answer 0
Getjob
1
Getjob
-2
样例解释:一共有三个人,他们的部落编号分别为: 1,2,2 。