#P15054. [UOI 2023 II Stage] Square or rectangle

    ID: 15087 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>2023交互题Special JudgeUOI(乌克兰)

[UOI 2023 II Stage] Square or rectangle

说明

Eolymp 邀请你与评测系统玩一个有趣的交互式游戏“正方形还是矩形”。

Eolymp 拥有一个大小为 100×100100 \times 100 单元格的正方形棋盘。棋盘的行从上到下用 11100100 的整数编号,列从左到右用 11100100 的整数编号。因此,位于棋盘左上角的单元格坐标为 (1,1)(1,\,1);位于棋盘右下角的单元格坐标为 (100,100)(100,\,100);位于第 ii 行与第 jj 列交汇处的单元格坐标为 (i,j)(i,\,j)

Eolymp 在棋盘上涂了一个矩形区域,其左上角坐标为 (x1,y1)(x_1,\,y_1),右下角坐标为 (x2,y2)(x_2,\,y_2)。Eolymp 对这些坐标保密。但已知涂色区域的面积至少是整个棋盘面积的 4%4\%

你可以向 Eolymp 询问任何单元格(它是否属于涂色区域),并从评测系统得到一个诚实的回答。你需要确定涂色区域是否是一个正方形。

:::align{center} :::

交互方式

要查询一个单元格是否属于涂色区域,你需要向 Eolymp 询问。为此,你需要输出字符 "?" 和两个整数 xxyy1x100,  1y1001 \le x \le 100, \; 1 \le y \le 100)——你想要询问的点的坐标。之后,你需要输出换行符并执行 flush\tt{flush} 操作。然后,你需要读取一行。Eolymp 将输出 inside\tt{inside}(如果单元格被涂色)或 outside\tt{outside}(否则)。

  • C++ 中使用 fflush(stdout)\tt{fflush(stdout)}cout.flush()\tt{cout.flush()}
  • Java 中使用 System.out.flush()\tt{System.out.flush()}
  • Pascal 中使用 flush(output)\tt{flush(output)}
  • Python 中使用 stdout.flush()\tt{stdout.flush()}
  • 其他语言请自行查阅文档。

你最多可以询问 1000010\,000 次。

当你得知答案时,你需要输出字符 "!"、一个空格,以及两个选项之一:要么是 square\tt{square}(如果 Eolymp 涂的图形是正方形),要么是 rectangle\tt{rectangle}(如果是矩形)。

如果你不遵守交互格式,可能会收到任何判题结果:Wrong Answer\tt{Wrong\ Answer}Runtime Error\tt{Runtime\ Error}Time Limit Exceeded\tt{Time\ Limit\ Exceeded} 等。

inside
inside
outside
inside
outside
outside
inside
outside
outside
? 50 50
? 75 75
? 10 10
? 20 20
? 19 20
? 20 19
? 80 80
? 81 80
? 80 81
! square
10 10 80 80
32

提示

在示例中,Eolymp 涂色的区域左上角为 (20,20)(20, 20),右下角为 (80,80)(80, 80)

题目描述中提供了一个与 Eolymp 交互的示例。你对 Eolymp 的查询可以不同。

你的程序将与 Eolymp 多次进行此游戏。设 qq 为你在所有游戏中询问的最大问题数。那么你将获得如下分数:

  • 如果你在任何一场游戏中询问超过 1000010\,000 次、给出错误答案或不遵守交互格式,你将获得 00 分。
  • 如果 1000<q100001\,000 < q \leq 10\,000,你将获得 55 分。
  • 如果 100<q1000100 < q \leq 1\,000,你将获得 1919 分。
  • 如果 50<q10050 < q \leq 100,你将获得 20+(100q)305020 + \lfloor\frac{(100 - q) \cdot 30}{50}\rfloor 分。
  • 如果 33<q5033 < q \leq 50,你将获得 50+(50q)501750 + \lfloor\frac{(50 - q) \cdot 50}{17}\rfloor 分。
  • 如果 q33q \leq 33,你将获得 100100 分。

翻译由 DeepSeek V3 完成