結果

問題 No.253 ロウソクの長さ
ユーザー asugen0402asugen0402
提出日時 2019-02-01 13:50:06
言語 C
(gcc 13.3.0)
結果
AC  
実行時間 22 ms / 2,000 ms
コード長 1,426 bytes
コンパイル時間 155 ms
コンパイル使用メモリ 30,464 KB
実行使用メモリ 25,348 KB
平均クエリ数 24.31
最終ジャッジ日時 2024-07-17 02:06:57
合計ジャッジ時間 2,714 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 36
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include <float.h>
#include <limits.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
//
#define D_VAL_SEP 40 //
#define D_VAL_MIN 10 //
#define D_VAL_MAX 1000000000 //
//
static int siQCnt; //
//
int
fRes(
int piVal // <I>
)
{
char lc1Buf[1024];
//
printf("? %d\n", piVal);
siQCnt++;
fflush(stdout);
//
fgets(lc1Buf, sizeof(lc1Buf), stdin);
sscanf(lc1Buf, "%d", &piVal);
return piVal;
}
//
int
fSrh(
int piMin // <I>
, int piMax // <I>
)
{
int liRet;
//
int liHalf = (piMin + piMax) / 2;
//
liRet = fRes(liHalf);
if (liRet < 0) {
return fSrh(piMin - 1, liHalf - 2);
}
else if (liRet > 0) {
return fSrh(liHalf, piMax - 1);
}
else {
return liHalf;
}
}
//
int
fMain(
int piTNo // <I> 1
)
{
int liRet;
// -
siQCnt = 0; //
//
liRet = fRes(D_VAL_SEP);
if (liRet < 0) {
liRet = fSrh(D_VAL_MIN - 1, D_VAL_SEP - 2);
}
else if (liRet > 0) {
liRet = fSrh(D_VAL_SEP, D_VAL_MAX - 1);
}
else {
liRet = D_VAL_SEP;
}
// -
printf("! %d\n", liRet + siQCnt - 1);
fflush(stdout);
return 0;
}
int
main()
{
fMain(0);
return 0;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0