結果

問題 No.455 冬の大三角
ユーザー くれちーくれちー
提出日時 2017-10-10 00:35:40
言語 C#(csc)
(csc 3.9.0)
結果
AC  
実行時間 71 ms / 2,000 ms
コード長 9,699 bytes
コンパイル時間 3,014 ms
コンパイル使用メモリ 115,320 KB
実行使用メモリ 24,076 KB
最終ジャッジ日時 2023-09-12 15:17:46
合計ジャッジ時間 9,698 ms
ジャッジサーバーID
(参考情報)
judge13 / judge11
このコードへのチャレンジ(β)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 67 ms
21,748 KB
testcase_01 AC 68 ms
23,844 KB
testcase_02 AC 70 ms
23,812 KB
testcase_03 AC 67 ms
23,892 KB
testcase_04 AC 68 ms
23,948 KB
testcase_05 AC 68 ms
23,856 KB
testcase_06 AC 69 ms
21,812 KB
testcase_07 AC 68 ms
21,928 KB
testcase_08 AC 69 ms
21,748 KB
testcase_09 AC 67 ms
23,932 KB
testcase_10 AC 67 ms
21,792 KB
testcase_11 AC 67 ms
23,792 KB
testcase_12 AC 66 ms
21,764 KB
testcase_13 AC 67 ms
21,736 KB
testcase_14 AC 68 ms
23,884 KB
testcase_15 AC 69 ms
24,076 KB
testcase_16 AC 68 ms
19,944 KB
testcase_17 AC 70 ms
23,844 KB
testcase_18 AC 68 ms
21,920 KB
testcase_19 AC 67 ms
21,796 KB
testcase_20 AC 68 ms
21,924 KB
testcase_21 AC 67 ms
22,000 KB
testcase_22 AC 67 ms
21,916 KB
testcase_23 AC 67 ms
21,964 KB
testcase_24 AC 69 ms
21,740 KB
testcase_25 AC 69 ms
21,804 KB
testcase_26 AC 68 ms
21,800 KB
testcase_27 AC 68 ms
21,908 KB
testcase_28 AC 70 ms
21,912 KB
testcase_29 AC 70 ms
21,912 KB
testcase_30 AC 69 ms
21,920 KB
testcase_31 AC 70 ms
21,772 KB
testcase_32 AC 70 ms
21,848 KB
testcase_33 AC 70 ms
21,804 KB
testcase_34 AC 68 ms
21,952 KB
testcase_35 AC 69 ms
21,800 KB
testcase_36 AC 71 ms
23,996 KB
testcase_37 AC 71 ms
21,804 KB
testcase_38 AC 70 ms
21,820 KB
testcase_39 AC 70 ms
23,756 KB
testcase_40 AC 69 ms
23,932 KB
testcase_41 AC 70 ms
19,764 KB
testcase_42 AC 69 ms
21,792 KB
testcase_43 AC 68 ms
21,992 KB
testcase_44 AC 69 ms
23,892 KB
testcase_45 AC 69 ms
23,788 KB
testcase_46 AC 69 ms
23,816 KB
testcase_47 AC 69 ms
21,912 KB
testcase_48 AC 68 ms
21,904 KB
testcase_49 AC 68 ms
23,860 KB
testcase_50 AC 67 ms
21,844 KB
testcase_51 AC 68 ms
19,864 KB
testcase_52 AC 68 ms
21,900 KB
testcase_53 AC 67 ms
23,808 KB
testcase_54 AC 68 ms
23,988 KB
testcase_55 AC 69 ms
21,916 KB
testcase_56 AC 67 ms
21,904 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc)
Copyright (C) Microsoft Corporation. All rights reserved.

ソースコード

diff #

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Numerics;
using System.Text;
using System.Threading.Tasks;
using CSharp7.Library;
using static System.Math;
using static System.Linq.Enumerable;
using static CSharp7.Library.Extentions;

namespace CSharp7
{
    public static class Program
    {
        public static void Solve(IO io)
        {
            var (h, w) = io.Read<int, int>();
            var sky = io.ReadMany(h, s => s.Select(c => c == '*').ToArray());

            for (var i = 0; i < h; i++)
                for (var j = 0; j < w; j++)
                    if (sky[i][j])
                    {
                        if (sky[i].Count(p => p) == 2) sky[i == 0 ? i + 1 : i - 1][j] = true;
                        else sky[i][j == 0 ? j + 1 : j - 1] = true;
                        goto ExitLoop;
                    }

            ExitLoop:
            io.WriteMany(sky, ps => ps.Select(p => p ? '*' : '-').AsString());
        }

        public static void Main()
        {
            var sw = new StreamWriter(Console.OpenStandardOutput()) { NewLine = "\n" };
#if DEBUG
            sw.AutoFlush = true;
#else
            sw.AutoFlush = false;
#endif
            Console.SetOut(sw);
            Solve(new IO(Console.In, Console.Out));
            Console.Out.Flush();
        }
    }
}

namespace CSharp7.Library
{
    public delegate T Parser<out T>(string str);
    public delegate string Serializer<in T>(T value);

    public class IO
    {
        private static readonly Dictionary<Type, Delegate> _parsers = new Dictionary<Type, Delegate>
        {
            { typeof(string), (Parser<string>)(s => s) },
            { typeof(char), (Parser<char>)char.Parse },
            { typeof(int), (Parser<int>)int.Parse },
            { typeof(long), (Parser<long>)long.Parse },
            { typeof(double), (Parser<double>)double.Parse },
            { typeof(decimal), (Parser<decimal>)decimal.Parse },
            { typeof(BigInteger), (Parser<BigInteger>)BigInteger.Parse },
        };

        private static readonly Dictionary<Type, Delegate> _serializers = new Dictionary<Type, Delegate>
        {
            { typeof(string), (Serializer<string>)(s => s) },
            { typeof(char), (Serializer<char>)(c => c.ToString()) },
            { typeof(int), (Serializer<int>)(i => i.ToString()) },
            { typeof(long), (Serializer<long>)(l => l.ToString()) },
            { typeof(double), (Serializer<double>)(d => d.ToString()) },
            { typeof(decimal), (Serializer<decimal>)(d => d.ToString()) },
            { typeof(BigInteger), (Serializer<BigInteger>)(b => b.ToString()) },
        };

        private TextReader _sr;
        private TextWriter _sw;

        public IO(TextReader sr, TextWriter sw)
        {
            _sr = sr;
            _sw = sw;
        }

        public string ReadLine() => _sr.ReadLine();

        public string ReadWord()
        {
            var sb = new StringBuilder();
            var c = _sr.Read();
            while (c != ' ' && c != '\n') { sb.Append((char)c); c = _sr.Read(); }
            return sb.ToString();
        }

        public T Read<T>(Parser<T> p = null)
            => (p ?? GetParser<T>())(ReadWord());

        public (T1, T2) Read<T1, T2>(Parser<T1> p1 = null, Parser<T2> p2 = null)
            => (Read(p1 ?? GetParser<T1>()), Read(p2 ?? GetParser<T2>()));

        public (T1, T2, T3) Read<T1, T2, T3>(Parser<T1> p1 = null, Parser<T2> p2 = null, Parser<T3> p3 = null)
            => (Read(p1 ?? GetParser<T1>()), Read(p2 ?? GetParser<T2>()), Read(p3 ?? GetParser<T3>()));

        public (T1, T2, T3, T4) Read<T1, T2, T3, T4>(Parser<T1> p1 = null, Parser<T2> p2 = null, Parser<T3> p3 = null, Parser<T4> p4 = null)
            => (Read(p1 ?? GetParser<T1>()), Read(p2 ?? GetParser<T2>()), Read(p3 ?? GetParser<T3>()), Read(p4 ?? GetParser<T4>()));

        public T[] ReadMany<T>(int count, Parser<T> p = null)
        {
            var a = new T[count];
            for (var i = 0; i < count; i++) a[i] = Read(p);
            return a;
        }

        public (T1[], T2[]) ReadMany<T1, T2>(int count, Parser<T1> p1 = null, Parser<T2> p2 = null)
        {
            var a1 = new T1[count];
            var a2 = new T2[count];
            for (var i = 0; i < count; i++) (a1[i], a2[i]) = Read(p1, p2);
            return (a1, a2);
        }

        public (T1[], T2[], T3[]) ReadMany<T1, T2, T3>(int count, Parser<T1> p1 = null, Parser<T2> p2 = null, Parser<T3> p3 = null)
        {
            var a1 = new T1[count];
            var a2 = new T2[count];
            var a3 = new T3[count];
            for (var i = 0; i < count; i++) (a1[i], a2[i], a3[i]) = Read(p1, p2, p3);
            return (a1, a2, a3);
        }

        public (T1[], T2[], T3[], T4[]) ReadMany<T1, T2, T3, T4>(int count, Parser<T1> p1 = null, Parser<T2> p2 = null, Parser<T3> p3 = null, Parser<T4> p4 = null)
        {
            var a1 = new T1[count];
            var a2 = new T2[count];
            var a3 = new T3[count];
            var a4 = new T4[count];
            for (var i = 0; i < count; i++) (a1[i], a2[i], a3[i], a4[i]) = Read(p1, p2, p3, p4);
            return (a1, a2, a3, a4);
        }

        public void Write<T>(T v, Serializer<T> s = null)
        {
            _sw.Write(s?.Invoke(v) ?? GetSerializer<T>()(v));
            _sw.Write(' ');
        }

        public void Write<T1, T2>(T1 v1, T2 v2, Serializer<T1> s1 = null, Serializer<T2> s2 = null)
        {
            Write(v1, s1);
            Write(v2, s2);
        }

        public void Write<T1, T2, T3>(T1 v1, T2 v2, T3 v3, Serializer<T1> s1 = null, Serializer<T2> s2 = null, Serializer<T3> s3 = null)
        {
            Write(v1, s1);
            Write(v2, s2);
            Write(v3, s3);
        }

        public void Write<T1, T2, T3, T4>(T1 v1, T2 v2, T3 v3, T4 v4, Serializer<T1> s1 = null, Serializer<T2> s2 = null, Serializer<T3> s3 = null, Serializer<T4> s4 = null)
        {
            Write(v1, s1);
            Write(v2, s2);
            Write(v3, s3);
            Write(v4, s4);
        }

        public void WriteLine<T>(T v, Serializer<T> s = null)
        {
            Write(v, s);
            _sw.WriteLine();
        }

        public void WriteLine<T1, T2>(T1 v1, T2 v2, Serializer<T1> s1 = null, Serializer<T2> s2 = null)
        {
            Write(v1, v2, s1, s2);
            _sw.WriteLine();
        }

        public void WriteLine<T1, T2, T3>(T1 v1, T2 v2, T3 v3, Serializer<T1> s1 = null, Serializer<T2> s2 = null, Serializer<T3> s3 = null)
        {
            Write(v1, v2, v3, s1, s2, s3);
            _sw.WriteLine();
        }

        public void WriteLine<T1, T2, T3, T4>(T1 v1, T2 v2, T3 v3, T4 v4, Serializer<T1> s1 = null, Serializer<T2> s2 = null, Serializer<T3> s3 = null, Serializer<T4> s4 = null)
        {
            Write(v1, v2, v3, v4, s1, s2, s3, s4);
            _sw.WriteLine();
        }

        public void WriteMany<T>(IEnumerable<T> vs, Serializer<T> s = null)
        {
            foreach (var v in vs) WriteLine(v, s);
        }

        public void WriteMany<T1, T2>(IEnumerable<T1> vs1, IEnumerable<T2> vs2, Serializer<T1> s1 = null, Serializer<T2> s2 = null)
        {
            foreach (var (v1, v2) in vs1.Zip(vs2, ValueTuple.Create)) WriteLine(v1, v2, s1, s2);
        }

        public void WriteMany<T1, T2, T3>(IEnumerable<T1> vs1, IEnumerable<T2> vs2, IEnumerable<T3> vs3, Serializer<T1> s1 = null, Serializer<T2> s2 = null, Serializer<T3> s3 = null)
        {
            foreach (var (v1, v2, v3) in vs1.Zip(vs2, vs3, ValueTuple.Create)) WriteLine(v1, v2, v3, s1, s2, s3);
        }

        public void WriteMany<T1, T2, T3, T4>(IEnumerable<T1> vs1, IEnumerable<T2> vs2, IEnumerable<T3> vs3, IEnumerable<T4> vs4, Serializer<T1> s1 = null, Serializer<T2> s2 = null, Serializer<T3> s3 = null, Serializer<T4> s4 = null)
        {
            foreach (var (v1, v2, v3, v4) in vs1.Zip(vs2, vs3, vs4, ValueTuple.Create)) WriteLine(v1, v2, v3, v4, s1, s2, s3, s4);
        }

        private Parser<T> GetParser<T>() => (Parser<T>)_parsers[typeof(T)];

        private Serializer<T> GetSerializer<T>() => (Serializer<T>)_serializers[typeof(T)];
    }

    public static class Extentions
    {
        public static string AsString(this IEnumerable<char> source) => new string(source.ToArray());

        public static void Swap<T>(ref T x, ref T y)
        {
            var tmp = x; x = y; y = tmp;
        }

        public static IEnumerable<T> Zip<T1, T2, T3, T>(this IEnumerable<T1> first, IEnumerable<T2> second, IEnumerable<T3> thrid, Func<T1, T2, T3, T> resultSelector)
        {
            using (var e1 = first.GetEnumerator())
            using (var e2 = second.GetEnumerator())
            using (var e3 = thrid.GetEnumerator())
            {
                while (e1.MoveNext() && e2.MoveNext() && e3.MoveNext())
                    yield return resultSelector(e1.Current, e2.Current, e3.Current);
            }
        }

        public static IEnumerable<T> Zip<T1, T2, T3, T4, T>(this IEnumerable<T1> first, IEnumerable<T2> second, IEnumerable<T3> thrid, IEnumerable<T4> fourth, Func<T1, T2, T3, T4, T> resultSelector)
        {
            using (var e1 = first.GetEnumerator())
            using (var e2 = second.GetEnumerator())
            using (var e3 = thrid.GetEnumerator())
            using (var e4 = fourth.GetEnumerator())
            {
                while (e1.MoveNext() && e2.MoveNext() && e3.MoveNext() && e4.MoveNext())
                    yield return resultSelector(e1.Current, e2.Current, e3.Current, e4.Current);
            }
        }
    }
}
0