QOJ.ac

QOJ

حد الوقت: 2 s حد الذاكرة: 2048 MB مجموع النقاط: 100 تفاعلية

#5653. 图书馆游戏

الإحصائيات

Alessia 和 Bernardo 正在通过大学图书馆的书籍探索竞技编程的世界。

图书馆包含 $m$ 个区域,编号从 $1$ 到 $m$。每个区域仅包含特定学科的书籍,不同的区域对应不同的学科。为了防止学生在图书馆内随意走动,大学建立了一套通行证系统。每张通行证都有一个关联的长度 $y$,允许进入图书馆中连续 $y$ 个区域的区间。在一次访问中,学生必须从这些区域中选择且仅选择一本书,然后离开图书馆。每张通行证只能使用一次。

目前,Alessia 和 Bernardo 拥有 $n$ 张通行证,长度分别为 $x_1, x_2, \dots, x_n$。他们对于如何提升自我有不同的看法:Alessia 认为学习许多不同的学科很重要,而 Bernardo 则认为深入学习至少一个学科很重要。因此,Alessia 希望使用这 $n$ 张通行证获得 $n$ 本不同学科的书,而 Bernardo 则希望获得至少两本相同学科的书。

他们达成了以下协议:在接下来的 $n$ 天里,每天 Alessia 将从剩余的通行证中选择一张长度为 $y$ 的通行证以及一个长度为 $y$ 的区域区间,然后 Bernardo 进入图书馆并从这些区域中恰好取走一本书。

Bernardo 能否设法获得至少两本相同学科的书,还是 Alessia 能够避免这种情况?

你需要决定扮演 Alessia 还是 Bernardo,并完成你所选角色的目标。裁判将扮演另一个角色。注意,即使在某个时刻 Bernardo 已经拿到了两本相同学科的书,交互也应持续到 $n$ 天结束。

输入格式

第一行包含两个整数 $n$ 和 $m$ ($1 \le n \le 100, n \le m \le 5000$),分别表示通行证的数量和区域的数量。

第二行包含 $n$ 个整数 $x_1, x_2, \dots, x_n$ ($1 \le x_i \le m$),表示可用的通行证长度。

交互

首先,你应该打印一行,包含字符串 AlessiaBernardo,表示你想要扮演的角色。

然后,对于 $n$ 个回合中的每一回合:

  • 如果你扮演 Alessia,打印一行,包含两个整数 $y$ 和 $a$ ($1 \le a \le m - y + 1$),表示你选择了长度为 $y$ 的通行证和区域区间 $[a, a + y - 1]$。注意,必须至少还有一张长度为 $y$ 的通行证可用。在此之后,读取一个整数 $b$ ($a \le b \le a + y - 1$),即 Bernardo 选择的书籍所属的学科。

  • 如果你扮演 Bernardo,读取两个整数 $y$ 和 $a$ ($1 \le a \le m - y + 1$),即 Alessia 选择的通行证长度和区间的起始区域索引。保证至少有一张长度为 $y$ 的通行证可用。然后,打印一行,包含一个整数 $b$ ($a \le b \le a + y - 1$),即你选择取书的学科。

如果你的任何交互格式错误,交互器将立即终止,你的程序将收到 WRONG-ANSWER 判决。否则,你将根据上述游戏规则获得相应的判决。

打印一行后,请务必换行并刷新输出。否则,你将收到 TIMELIMIT 判决。刷新输出的方法如下:

  • C 语言:fflush(stdout);
  • C++:fflush(stdout);cout << flush;cout.flush();
  • Java 和 Kotlin:System.out.flush();
  • Python:sys.stdout.flush();

样例

样例输入 1

5 14
3 7 2 3 10

样例输出 1

-

说明

样例 1 的说明: 可以证明 Alessia 可以实现她的目标。以下是一个交互示例(读取输入后):

参赛者 裁判 说明
Alessia 程序扮演 Alessia
3 11 选择 $y = 3$ 和 $a = 11$
13 裁判选择 $b = 13$
10 2 选择 $y = 10$ 和 $a = 2$
9 裁判选择 $b = 9$
7 1 选择 $y = 7$ 和 $a = 1$
4 裁判选择 $b = 4$
2 10 选择 $y = 2$ 和 $a = 10$
10 裁判选择 $b = 10$
3 6 选择 $y = 3$ 和 $a = 6$
7 裁判选择 $b = 7$

参赛者的程序获胜,因为 Bernardo 选择的所有书籍都属于不同的学科。此交互示例中参赛者和裁判执行的操作可能不是最优的。

样例输入 2

4 10
4 1 6 4

样例输出 2

-

说明

样例 2 的说明: 可以证明 Bernardo 可以实现他的目标。以下是一个交互示例(读取输入后):

参赛者 裁判 说明
Bernardo 程序扮演 Bernardo
4 1 裁判选择 $y = 4$ 和 $a = 1$
4 选择 $b = 4$
1 10 裁判选择 $y = 1$ 和 $a = 10$
10 选择 $b = 10$
6 3 裁判选择 $y = 6$ 和 $a = 3$
4 选择 $b = 4$
4 5 裁判选择 $y = 4$ 和 $a = 5$
8 选择 $b = 8$

参赛者的程序获胜,因为 Bernardo 选择了两本学科编号为 4 的书。此交互示例中参赛者和裁判执行的操作可能不是最优的。

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.