AT_joisc2014_d.ラーメンの食べ比べ
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
这是一道交互题。
背景
JOI 君和 IOI 酱都喜欢吃拉面。JOI 君喜欢吃清汤拉面,而 IOI 酱喜欢吃浓汤拉面,在 JOI 君和 IOI 酱居住的城镇里,共有 N 家拉面馆,编号为 0 到 N−1。
我们不知道每家拉面馆卖的是清汤拉面还是浓汤拉面,因此,JOI 君和 IOI 酱决定去附近的一些拉面馆寻找最好吃的清汤和浓汤拉面。
JOI 君和 IOI 酱到附近的拉面馆,分别确定两家拉面馆拉面的浓厚度,浓厚度是一个大于等于 0 小于等于 N−1 的整数,每家面馆拉面的浓厚度两两不同。JOI 君和 IOI 酱每天每人去一家拉面馆,通过品尝味道,可以比较出两家拉面馆哪一家浓厚度更高。
出于健康因素考虑,JOI 君和 IOI 酱最多吃 600 天拉面。
任务
给定城镇里拉面馆数 N,请在最多吃 600 天拉面的情况下确定浓厚度最高的拉面馆和浓厚度最低的拉面馆。
实现细节
你需要用一个程序实现上述任务。该程序必须实现以下函数:
void Ramen(int N)
- 对于每个测试用例,该函数仅调用一次。
- 参数 N 表示城镇里的拉面馆数。
你可以且仅可以在该函数中调用以下两个函数:
int Compare(int X, int Y)
- 该函数用来比较两家拉面馆 X,Y 的浓厚程度。
- 参数 X,Y 表示用来比较的两家拉面馆的编号,其必须是大于等于 0 小于等于 N−1 的整数。如果不满足该条件,会被判为
Wrong Answer [1]。 - 如果拉面馆 X 的浓厚程度大于拉面馆 Y 的浓厚程度,该函数的返回值为 1,否则为 −1。
- 如果该函数被调用超过 600 次,会被判为
Wrong Answer [2]。
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 下载本题的附加文件。
若你编写的程序名称为 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 函数实现将通过标准输入/输出与单独运行的交互器进行交互。
输入格式
样例评测程序将从标准输入读入以下数据:
第一行两个整数 N,T,用一个空格隔开。N 表示拉面馆数,评测程序只会处理 T=1 的数据。
接下来 N 行,第 i 行表示拉面馆 i 的浓厚度 。
输出格式
样例评测程序将向标准输出输出以下信息。
- 判为正确时,输出
Accepted; - 运行过程中被判为错误时,以
Wrong Answer [x]的格式报告并退出。
样例输入
3 1
1
2
0
样例交互示例
| 调用函数 | 返回值 |
|---|---|
Compare(0, 1) |
-1 |
Compare(0, 2) |
1 |
Answer(2, 1) |
/ |
说明/提示
对于所有数据,1⩽N⩽400。
翻译来源自 LOJ。
输入解题思路,AI测评打分。不知道怎么写?