QOJ.ac

QOJ

时间限制: 3 s 内存限制: 512 MB 总分: 100 交互

#8966. Kukac

统计

“当格里高尔·萨姆莎(Gregor Samsa)一天早晨从不安的睡梦中醒来时,他发现自己躺在床上变成了一只巨大的甲虫”……这是卡夫卡小说《变形记》(Die Verwandlung)中著名的开篇名句。

鲜为人知的是,在从德语翻译的过程中,丢失了一个小小的技巧,即一个玩笑。谷歌翻译将上述句子(去掉最后一个词 verwandelt,意为“变形”)翻译为:“当格里高尔·萨姆莎一天早晨从不安的睡梦中醒来时,他发现自己的床上有一只巨大的甲虫。”这样,读者在第一句结尾处感到惊讶,并突然进入了当时一种新颖的荒诞小说类型。

不过,让我们把语言上的琐事放在一边。格里高尔现在是一只甲虫,位于平面上的点 $P_0$。他想知道自己是否位于 $N$ 边形 $P_1P_2 \dots P_N$ 的内部。

已知甲虫除了对 CCW(逆时针,counterclockwise)方向的直觉外,没有任何其他感知。因此,格里高尔可以询问任意三个点 $P_a, P_b, P_c$ 是否呈 CCW 顺序。

多边形 $P_1P_2 \dots P_N$ 不一定是凸的,但它不自交。点 $P_0, P_1, \dots, P_N$ 两两不同,且任意三点不共线。

定义:若点 $C$ 位于直线 $AB$ 的左侧(从点 $A$ 望向点 $B$),则称点 $A, B, C$ 呈 CCW 顺序。

左图中的点 $A, B, C$ 呈 CCW 顺序,而右图中的则不是。

交互

这是一个交互式题目。你的程序需要与组织者编写的程序进行对话。

在交互开始前,你的程序应从标准输入读取自然数 $N$(多边形的顶点数)和自然数 $Q$(你的程序允许发送的查询次数)。

之后,你的程序可以通过向标准输出写入内容来发送查询。每个查询应单独占一行,格式为 “? $a$ $b$ $c$”,其中 $0 \le a, b, c \le N$。每次输出查询后,你的程序必须刷新缓冲区,并从标准输入读取查询的回答——如果点 $P_a, P_b, P_c$ 呈 CCW 顺序,则回答为 $1$,否则为 $0$。特别地,如果索引 $a, b, c$ 不互不相同,回答将为 $0$。你的程序最多可以发送 $Q$ 次此类查询。

当你的程序得出结论后,应向标准输出写入 “!1”(如果点 $P_0$ 位于多边形内部)或 “!0”(如果点 $P_0$ 位于多边形外部)。随后,程序必须再次刷新缓冲区并结束运行。

说明:你可以通过评估系统下载示例源代码,这些代码展示了正确的交互方式,包括如何刷新输出。

子任务

子任务 分值 数据范围
1 5 $3 \le N \le 50, Q = N^3$, 多边形是凸的
2 25 $3 \le N \le 50, Q = N^3$
3 15 $3 \le N \le 500, Q = N^2$
4 25 $3 \le N \le 500, Q = 4N$
5 30 $3 \le N \le 500, Q = 2N$

样例

输入格式 1

5 125
1
1
0
0

输出格式 1

? 1 2 3
? 0 4 1
? 2 5 4
? 0 1 5
! 0

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.