結果

問題 No.246 質問と回答
ユーザー りあん
提出日時 2015-07-17 23:54:54
言語 C#
(csc 2.8.2.62916)
結果
AC  
実行時間 49 ms
コード長 2,599 Byte
コンパイル時間 628 ms
使用メモリ 16,008 KB
平均クエリ数 32.43
最終ジャッジ日時 2019-08-04 16:19:10

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
01.in AC 48 ms
15,988 KB
02.in AC 47 ms
15,996 KB
03.in AC 48 ms
15,992 KB
04.in AC 48 ms
15,992 KB
05.in AC 48 ms
16,000 KB
06.in AC 48 ms
15,988 KB
07.in AC 48 ms
16,004 KB
08.in AC 48 ms
15,996 KB
09.in AC 48 ms
15,988 KB
10.in AC 48 ms
15,992 KB
11.in AC 47 ms
15,996 KB
12.in AC 48 ms
15,996 KB
13.in AC 48 ms
16,008 KB
14.in AC 48 ms
15,988 KB
15.in AC 48 ms
15,996 KB
16.in AC 48 ms
15,996 KB
17.in AC 48 ms
15,988 KB
18.in AC 48 ms
15,988 KB
19.in AC 48 ms
16,000 KB
20.in AC 48 ms
15,980 KB
21.in AC 48 ms
15,992 KB
22.in AC 49 ms
15,988 KB
23.in AC 48 ms
16,000 KB
24.in AC 47 ms
15,996 KB
25.in AC 47 ms
16,000 KB
26.in AC 48 ms
15,992 KB
27.in AC 47 ms
16,000 KB
28.in AC 47 ms
16,004 KB
29.in AC 47 ms
15,992 KB
30.in AC 47 ms
15,988 KB
テストケース一括ダウンロード
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 2.8.2.62916 (2ad4aabc)
Copyright (C) Microsoft Corporation. All rights reserved.

ソースコード

diff #
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Text;
using System.Numerics;

namespace Solver
{
    class Program
    {
        const int M = 1000000007;
        const double eps = 10e-9;
        static void Main()
        {
            var sw = new System.IO.StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false };
            var sc = new Scan();
            int l = 1, r = int.MaxValue / 2;
            while (l < r)
            {
                int m = (l + r) / 2;
                sw.WriteLine("? {0}", m);
                sw.Flush();
                
                if (sc.Int == 1) l = m + 1;
                else r = m - 1;
            }
            ++r;
            while (true)
            {
                sw.WriteLine("? {0}", r);
                sw.Flush();
                if (sc.Int == 1)
                {
                    sw.WriteLine("! {0}", r);
                    sw.Flush();
                    return;
                }
                --r;
            }
        }
    }
    class Scan
    {
        public int Int { get { return int.Parse(Console.ReadLine().Trim()); } }
        public long Long { get { return long.Parse(Console.ReadLine().Trim()); } }
        public string Str { get { return Console.ReadLine().Trim(); } }
        public int[] IntArr { get { return Console.ReadLine().Trim().Split().Select(int.Parse).ToArray(); } }
        public long[] LongArr { get { return Console.ReadLine().Trim().Split().Select(long.Parse).ToArray(); } }
        public double[] DoubleArr { get { return Console.ReadLine().Split().Select(double.Parse).ToArray(); } }
        public string[] StrArr { get { return Console.ReadLine().Trim().Split(); } }
        public List<int> IntList { get { return Console.ReadLine().Trim().Split().Select(int.Parse).ToList(); } }
        public List<long> LongList { get { return Console.ReadLine().Trim().Split().Select(long.Parse).ToList(); } }
        public void Multi(out int a, out int b) { var arr = IntArr; a = arr[0]; b = arr[1]; }
        public void Multi(out int a, out int b, out int c) { var arr = IntArr; a = arr[0]; b = arr[1]; c = arr[2]; }
        public void Multi(out int a, out string b) { var arr = StrArr; a = int.Parse(arr[0]); b = arr[1]; }
        public void Multi(out int a, out char b) { var arr = StrArr; a = int.Parse(arr[0]); b = arr[1][0]; }
        public void Multi(out long a, out long b) { var arr = LongArr; a = arr[0]; b = arr[1]; }
        public void Multi(out string a, out string b) { var arr = StrArr; a = arr[0]; b = arr[1]; }
    }
}
0