AT_joisc2014_d ラーメンの食べ比べ

题目描述

**这是一道交互题。** #### 背景 JOI 君和 IOI 酱都喜欢吃拉面。JOI 君喜欢吃清汤拉面,而 IOI 酱喜欢吃浓汤拉面,在 JOI 君和 IOI 酱居住的城镇里,共有 $N$ 家拉面馆,编号为 $0$ 到 $N-1$。 我们不知道每家拉面馆卖的是清汤拉面还是浓汤拉面,因此,JOI 君和 IOI 酱决定去附近的一些拉面馆寻找最好吃的清汤和浓汤拉面。 JOI 君和 IOI 酱到附近的拉面馆,分别确定两家拉面馆拉面的浓厚度,浓厚度是一个大于等于 $0$ 小于等于 $N-1$ 的整数,每家面馆拉面的浓厚度两两不同。JOI 君和 IOI 酱每天每人去一家拉面馆,通过品尝味道,可以比较出两家拉面馆哪一家浓厚度更高。 出于健康因素考虑,JOI 君和 IOI 酱最多吃 $600$ 天拉面。 #### 任务 给定城镇里拉面馆数 $N$,请在最多吃 $600$ 天拉面的情况下确定浓厚度最高的拉面馆和浓厚度最低的拉面馆。 #### 实现细节 你需要用一个程序实现上述任务。该程序必须实现以下函数: ```cpp void Ramen(int N) ``` - 对于每个测试用例,该函数**仅调用一次**。 - 参数 $N$ 表示城镇里的拉面馆数。 你可以且仅可以在该函数中调用以下两个函数: ```cpp int Compare(int X, int Y) ``` - 该函数用来比较两家拉面馆 $X,Y$ 的浓厚程度。 - 参数 $X,Y$ 表示用来比较的两家拉面馆的编号,其**必须是大于等于 $0$ 小于等于 $N-1$ 的整数**。如果不满足该条件,会被判为 `Wrong Answer [1]`。 - 如果拉面馆 $X$ 的浓厚程度大于拉面馆 $Y$ 的浓厚程度,该函数的返回值为 $1$,否则为 $-1$。 - 如果该函数被调用超过 $600$ 次,会被判为 `Wrong Answer [2]`。 ```cpp int Answer(int X, int Y) ``` - 该函数用来回答哪家拉面馆的浓厚程度最低和哪家拉面馆的浓厚程度最高。其中 $X$ 表示浓厚程度**最低**的拉面馆的编号,$Y$ 表示浓厚程度**最高**的拉面馆的编号。$X,Y$ **必须是大于等于 $0$ 小于等于 $N-1$ 的整数**。如果不满足该条件,会被判为 `Wrong Answer [4]`。 - **`Ramen` 函数必须调用该函数来结束**,否则会被判为 `Wrong Answer [3]`。 - 可以保证,与调用 `Compare` 函数的结果一致的答案是唯一的。如果与答案不一致,则会被判为 `Wrong Answer [5]`,一致则会被判为 `Accepted`。 - 调用此函数后,程序结束。 **编译与运行方法** 本体提供了 ramen.h、grader.c 和 grader.cpp 三个文件。可前往 [LOJ](https://loj.ac/p/2875/files) 下载本题的附加文件。 若你编写的程序名称为 ramen.c 或 ramen.cpp,请运行以下命令来编译: - 对于 C 语言:`gcc -O2 -lm -o grader grader.c ramen.c` - 对于 C++ 语言:`g++ -O2 -o grader grader.cpp ramen.cpp` 当命令成功时,会产生一个可执行文件 grader。 注意实际评测时的程序与下发的样例评测程序并不相同。实际的 ramen.h 函数实现将通过标准输入/输出与单独运行的交互器进行交互。

输入格式

输出格式

说明/提示

对于所有数据,$1\leqslant N\leqslant 400$。 翻译来源自 LOJ。