#NOI2004lxB. 姗姗的一天

姗姗的一天

Description

辉辉、姗姗和佳佳是好朋友,他们一起参加了在湖南长沙长郡中学举办的第二十一届全国青少年信息学奥林匹克竞赛(NOI2004)。他们很早就来到了长沙,可是报名还没有开始。怎么办呢?他们决定分头出去玩一天,晚上回到宿舍以后给大家说说自己这一天做了什么有意义的事情。 你一定想不到姗姗干嘛去了——他吃了一天。姗姗想:“辉辉这么累,他一定睡了一天。我不能睡一天,我要做有意义的事情。”于是,他吃了一天。姗姗喜欢吃汤圆,但是对汤圆的尺寸是非常挑剔的。他的心中有一个理想汤圆的半径 x ,离x越接近,他越喜欢——汤圆太大吃着不方便,汤圆太小吃着不尽兴。“您好先生,请问你需要多大尺寸的汤圆呢?”服务小姐微笑着问他。“这样吧,”姗姗突然想考考她,“你每次拿三个汤圆给我看,我给你挑一个我最满意的汤圆。用不了几次,你就知道我想要的尺寸了。” 下面由你扮演服务小姐,用最少的询问次数找出姗姗心中的理想尺寸。

Format

Input

Output

Samples



Limitation

【交互方法】

本题是一道交互式题目,你的程序应当和测试库进行交互,而不得访问任何文件(包括临时文件)。测试库提供了若干函数,它们的用法和作用如下:

  • init必须先调用,但只能调用一次,用作初始化测试库;
  • show(s1, s2, s3)的作用是给姗姗看三个汤圆。函数返回一个整数,即最满意汤圆的编号 i (1<= i <=3)。如果有多个汤圆的满意程度一样,他会随便选择一个。尺寸a比尺寸b更满意当且仅当ab更接近理想尺寸 x ,即| a - x |<| b - x |
  • answer(x)的作用是回答姗姗最满意汤圆的尺寸。

【对使用Pascal选手的提示】

你的程序应当使用如下的语句引用测试库。 uses shanshan_lib; 测试库使用的函数原型为: procedure init; function show(s1,s2,s3:integer):integer; procedure answer(x:integer);

【对使用C/C++选手的提示】

你应当建立一个工程,把文件shanshan_lib_c.o包含进来,然后在程序头加上一行: #include “shanshan_lib_c.h” 测试库使用的函数原型为: void init(); int show(int s1, int s2, int s3); void answer(int x); 【你如何测试自己的程序】

  • 在工作目录下建立一个文件叫做shanshan.in,文件仅包含一个整数n,即姗姗心目中理想的汤圆尺寸。
  • 执行你的程序,此时测试库会产生输出文件shanshan.log,该文件中包括了你程序和库交互的记录和最后的结果。
  • 如果程序正常结束,shanshan.log的最后一行包含一个整数,为询问的次数。
  • 如果程序非法退出,则我们不保证shanshan.log中的内容有意义。

【约定】

  • 理想尺寸x为不超过100的正整数。
  • 询问次数不能超过5

【样例】

shanshan.in内容如下

6 一种可行的调用方案如下:

Pascal选手的调用方法 C/C++选手的调用方法 说明
init; init(); 初始化程序
show(1, 3, 10) show(1, 3, 10); 返回2,即尺寸3更令姗姗满意
show(5, 6, 7); 返回2,即尺寸6更令姗姗满意
answer(6); 报告理想尺寸为6

注意,该例子只是对库函数的使用说明,并没有算法上的意义。 【评分方法】

如果你的程序有下列情况之一,该测试点0分:

  • 访问了任何文件(包括临时文件)或者自行终止;
  • 非法调用库函数;
  • 让测试库异常退出。 否则得该此时点的100%的分数。