結果

問題 No.240 ナイト散歩
ユーザー 抹茶アイス
提出日時 2023-07-28 16:23:39
言語 C#
(.NET 8.0.404)
結果
AC  
実行時間 62 ms / 2,000 ms
コード長 1,853 bytes
コンパイル時間 11,793 ms
コンパイル使用メモリ 167,800 KB
実行使用メモリ 185,720 KB
最終ジャッジ日時 2024-10-06 08:47:19
合計ジャッジ時間 14,602 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 30
権限があれば一括ダウンロードができます
コンパイルメッセージ
  復元対象のプロジェクトを決定しています...
  /home/judge/data/code/main.csproj を復元しました (100 ms)。
MSBuild のバージョン 17.9.6+a4ecab324 (.NET)
  main -> /home/judge/data/code/bin/Release/net8.0/main.dll
  main -> /home/judge/data/code/bin/Release/net8.0/publish/

ソースコード

diff #

using System;
using System.Collections.Generic;
using System.Linq;

namespace yukicoder
{
	public class Program
	{
		public static void Main()
        {
			var g = Console.ReadLine().Split(' ').Select(x => int.Parse(x)).ToArray();
            var k = Knight();
            if (k.Any(value => value[0] == g[0] && value[1] == g[1]))
            {
                Console.WriteLine("YES");
            }
            else
            {
                Console.WriteLine("NO");
            }
        }
		public static List<int[]> Knight()
        {
			var k = new List<int[]>[4];
            var X = new int[2] { 2, -2 };
            var Y = new int[2] { 1, -1 };
            k[0]=new List<int[]>{ new int[2] { 0, 0 }};
            for (var i = 0; i < 3; i++)
            {
                k[i + 1] = new List<int[]>();
                foreach (var ks in k[i])
                {
                    foreach (var x in X)
                    {
                        foreach (var y in Y)
                        {
                            var a = ks[0] + x;
                            var b = ks[1] + y;
                            k[i + 1].Add(new int[2] { a, b });
                        }
                    }
                    foreach (var x in X)
                    {
                        foreach (var y in Y)
                        {
                            var a = ks[0] + y;
                            var b = ks[1] + x;
                            k[i + 1].Add(new int[2] { a, b });
                        }
                    }
                    k[i + 1] = k[i + 1].Distinct().ToList();
                }
            }
            var K = new List<int[]>();
            foreach(var ks in k)
            {
                K.AddRange(ks);
            }
            K = K.Distinct().ToList();
            return K;
        }
	}
}
0