提出 #32381972


ソースコード 拡げる

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Numerics;

namespace Tasks
{
    public class B
    {
        public static void Main()
        {
            var sw = new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false };
            Console.SetOut(sw);
            Solve();
            Console.Out.Flush();
        }

        public static void Solve()
        {
            var (N, K) = Scanner.Scan<int, int>();
            var A = Scanner.ScanEnumerable<int>().Select(x => x - 1).ToArray();
            var P = new (long X, long Y)[N];
            for (var i = 0; i < N; i++)
            {
                var (x, y) = Scanner.Scan<long, long>();
                P[i] = (x, y);
            }

            const long inf = (long)1e18;

            bool F(long x)
            {
                var ok = new bool[N];
                foreach (var a in A)
                {
                    for (var i = 0; i < N; i++)
                    {
                        var dx = P[a].X - P[i].X;
                        var dy = P[a].Y - P[i].Y;
                        var d = dx * dx + dy * dy;
                        ok[i] |= d <= x;
                    }
                }

                return ok.All(x => x);
            }

            var r = BinarySearch(-1, inf, F);
            var answer = Math.Sqrt(r);
            Console.WriteLine(answer);
        }

        public static long BinarySearch(long ng, long ok, Func<long, bool> func)
        {
            while (Math.Abs(ok - ng) > 1)
            {
                var m = (ok + ng) / 2;
                if (func(m)) ok = m;
                else ng = m;
            }
            return ok;
        }

        public static class Scanner
        {
            public static string ScanLine() => Console.ReadLine()?.Trim() ?? string.Empty;
            public static string[] Scan() => ScanLine().Split(' ');
            public static T Scan<T>() where T : IConvertible => Convert<T>(Scan()[0]);
            public static (T1, T2) Scan<T1, T2>() where T1 : IConvertible where T2 : IConvertible
            {
                var line = Scan();
                return (Convert<T1>(line[0]), Convert<T2>(line[1]));
            }
            public static (T1, T2, T3) Scan<T1, T2, T3>() where T1 : IConvertible where T2 : IConvertible where T3 : IConvertible
            {
                var line = Scan();
                return (Convert<T1>(line[0]), Convert<T2>(line[1]), Convert<T3>(line[2]));
            }
            public static (T1, T2, T3, T4) Scan<T1, T2, T3, T4>() where T1 : IConvertible where T2 : IConvertible where T3 : IConvertible where T4 : IConvertible
            {
                var line = Scan();
                return (Convert<T1>(line[0]), Convert<T2>(line[1]), Convert<T3>(line[2]), Convert<T4>(line[3]));
            }
            public static (T1, T2, T3, T4, T5) Scan<T1, T2, T3, T4, T5>() where T1 : IConvertible where T2 : IConvertible where T3 : IConvertible where T4 : IConvertible where T5 : IConvertible
            {
                var line = Scan();
                return (Convert<T1>(line[0]), Convert<T2>(line[1]), Convert<T3>(line[2]), Convert<T4>(line[3]), Convert<T5>(line[4]));
            }
            public static (T1, T2, T3, T4, T5, T6) Scan<T1, T2, T3, T4, T5, T6>() where T1 : IConvertible where T2 : IConvertible where T3 : IConvertible where T4 : IConvertible where T5 : IConvertible where T6 : IConvertible
            {
                var line = Scan();
                return (Convert<T1>(line[0]), Convert<T2>(line[1]), Convert<T3>(line[2]), Convert<T4>(line[3]), Convert<T5>(line[4]), Convert<T6>(line[5]));
            }
            public static IEnumerable<T> ScanEnumerable<T>() where T : IConvertible => Scan().Select(Convert<T>);
            private static T Convert<T>(string value) where T : IConvertible => (T)System.Convert.ChangeType(value, typeof(T));
        }
    }
}

提出情報

提出日時
問題 B - Light It Up
ユーザ AconCavy
言語 C# (.NET Core 3.1.201)
得点 200
コード長 4097 Byte
結果 AC
実行時間 237 ms
メモリ 28796 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 200 / 200
結果
AC × 3
AC × 30
セット名 テストケース
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt
ケース名 結果 実行時間 メモリ
sample_01.txt AC 79 ms 28212 KiB
sample_02.txt AC 82 ms 27924 KiB
sample_03.txt AC 90 ms 28480 KiB
test_01.txt AC 75 ms 28480 KiB
test_02.txt AC 91 ms 28204 KiB
test_03.txt AC 84 ms 28040 KiB
test_04.txt AC 86 ms 28024 KiB
test_05.txt AC 80 ms 28312 KiB
test_06.txt AC 183 ms 28724 KiB
test_07.txt AC 138 ms 28460 KiB
test_08.txt AC 130 ms 28656 KiB
test_09.txt AC 155 ms 28740 KiB
test_10.txt AC 85 ms 28228 KiB
test_11.txt AC 83 ms 28372 KiB
test_12.txt AC 85 ms 28676 KiB
test_13.txt AC 78 ms 28056 KiB
test_14.txt AC 95 ms 28480 KiB
test_15.txt AC 89 ms 28376 KiB
test_16.txt AC 79 ms 28488 KiB
test_17.txt AC 155 ms 28760 KiB
test_18.txt AC 140 ms 28748 KiB
test_19.txt AC 193 ms 28688 KiB
test_20.txt AC 80 ms 28340 KiB
test_21.txt AC 237 ms 28660 KiB
test_22.txt AC 148 ms 28768 KiB
test_23.txt AC 173 ms 28768 KiB
test_24.txt AC 88 ms 28216 KiB
test_25.txt AC 82 ms 28756 KiB
test_26.txt AC 232 ms 28796 KiB
test_27.txt AC 85 ms 28744 KiB