結果

問題 No.246 質問と回答
ユーザー りあん
提出日時 2015-07-17 23:54:54
言語 C#
(csc 3.4.0-beta4-19569-03)
結果
AC  
実行時間 50 ms
コード長 2,599 Byte
コンパイル時間 954 ms
使用メモリ 17,016 KB
平均クエリ数 32.43
最終ジャッジ日時 2019-12-20 14:48:40

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
01.in AC 47 ms
17,012 KB
02.in AC 47 ms
17,008 KB
03.in AC 46 ms
17,008 KB
04.in AC 47 ms
17,004 KB
05.in AC 46 ms
17,004 KB
06.in AC 46 ms
17,008 KB
07.in AC 47 ms
17,004 KB
08.in AC 46 ms
17,016 KB
09.in AC 46 ms
17,008 KB
10.in AC 46 ms
17,012 KB
11.in AC 46 ms
17,012 KB
12.in AC 46 ms
17,004 KB
13.in AC 46 ms
17,000 KB
14.in AC 46 ms
17,012 KB
15.in AC 48 ms
17,000 KB
16.in AC 47 ms
17,000 KB
17.in AC 47 ms
16,996 KB
18.in AC 47 ms
17,016 KB
19.in AC 47 ms
17,008 KB
20.in AC 49 ms
16,992 KB
21.in AC 47 ms
16,996 KB
22.in AC 49 ms
16,996 KB
23.in AC 48 ms
17,000 KB
24.in AC 48 ms
17,012 KB
25.in AC 50 ms
17,004 KB
26.in AC 49 ms
17,004 KB
27.in AC 46 ms
17,000 KB
28.in AC 46 ms
17,016 KB
29.in AC 47 ms
16,996 KB
30.in AC 46 ms
17,008 KB
テストケース一括ダウンロード
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.3.1-beta4-19462-11 (66a912c9)
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