結果
問題 | No.402 最も海から遠い場所 |
ユーザー |
![]() |
提出日時 | 2016-09-10 14:06:13 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 2,143 ms / 3,000 ms |
コード長 | 8,582 bytes |
コンパイル時間 | 865 ms |
コンパイル使用メモリ | 109,824 KB |
実行使用メモリ | 100,224 KB |
最終ジャッジ日時 | 2024-11-16 19:58:08 |
合計ジャッジ時間 | 11,953 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 19 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;using System.Collections.Generic;using System.Linq;//YukiCoder402 最も海から遠い場所//http://yukicoder.me/problems/no/402class Program{static string InputPattern = "InputX";static List<string> GetInputList(){var WillReturn = new List<string>();if (InputPattern == "Input1") {WillReturn.Add("8 8");WillReturn.Add(".#..#...");WillReturn.Add(".######.");WillReturn.Add("#####...");WillReturn.Add("#####.#.");WillReturn.Add("########");WillReturn.Add("######.#");WillReturn.Add("#####...");WillReturn.Add("...####.");//3}else if (InputPattern == "Input2") {WillReturn.Add("7 7");WillReturn.Add("#######");WillReturn.Add("#######");WillReturn.Add("#######");WillReturn.Add("#######");WillReturn.Add("#.#####");WillReturn.Add("#..####");WillReturn.Add("#######");//3}else if (InputPattern == "Input3") {WillReturn.Add("60 60");WillReturn.Add("............................................................");WillReturn.Add("............................................................");WillReturn.Add("........................................#...............##..");WillReturn.Add(".......................................####............##...");WillReturn.Add(".........................................##...........##....");WillReturn.Add(".........................................###........#.......");WillReturn.Add(".........................................#####...#..#.......");WillReturn.Add(".........................................#########....#.....");WillReturn.Add("........................................###########.........");WillReturn.Add("........................................#############.......");WillReturn.Add(".....................................##.##########..........");WillReturn.Add("......................................#########.............");WillReturn.Add(".....................................#########..............");WillReturn.Add("....................................##.#...###..............");WillReturn.Add("...................................###.......#..............");WillReturn.Add(".....................................###....................");WillReturn.Add(".....................................#......................");WillReturn.Add(".......................................##...................");WillReturn.Add("......................................#.#...................");WillReturn.Add(".....................................####...................");WillReturn.Add(".....................................####...................");WillReturn.Add(".....................................#####..................");WillReturn.Add(".....................................######.................");WillReturn.Add(".....................................######.................");WillReturn.Add(".....................................######.................");WillReturn.Add(".....................................#####..................");WillReturn.Add("....................................#####...................");WillReturn.Add("....................................#####...................");WillReturn.Add("....................................######..................");WillReturn.Add("...................................#####....................");WillReturn.Add("................................#.######....................");WillReturn.Add(".................................#######....................");WillReturn.Add("............................#...########....................");WillReturn.Add("............................#.##########....................");WillReturn.Add("...........................############.....................");WillReturn.Add("...........................############.....................");WillReturn.Add("..........................#############.....................");WillReturn.Add(".........................###############....................");WillReturn.Add("....................###..##############.....................");WillReturn.Add("...............#####################.##.....................");WillReturn.Add("..............###################.#..#......................");WillReturn.Add(".....#......###############.####..#.........................");WillReturn.Add("..........########......###.................................");WillReturn.Add("..........####....##.#.#####................................");WillReturn.Add("......#.##...#.######..###..................................");WillReturn.Add(".....##.####...######..##...................................");WillReturn.Add("......######..####.#........................................");WillReturn.Add("...#...######.###...........................................");WillReturn.Add("......##.####..#............................................");WillReturn.Add(".......#.###................................................");WillReturn.Add("........####................................................");WillReturn.Add(".......####.................................................");WillReturn.Add(".......####.................................................");WillReturn.Add(".......#.##.................................................");WillReturn.Add("............................................................");WillReturn.Add("..........#.................................................");WillReturn.Add("........#.#.................................................");WillReturn.Add("............................................................");WillReturn.Add("............................................................");WillReturn.Add("............................................................");//4}else {string wkStr;while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);}return WillReturn;}static int UB_X;static int UB_Y;static void Main(){List<string> InputList = GetInputList();int[] wkArr = InputList[0].Split(' ').Select(X => int.Parse(X)).ToArray();int H = wkArr[0];int W = wkArr[1];UB_X = W - 1;UB_Y = H - 1;char[,] BanArr = new char[UB_X + 1, UB_Y + 1];for (int LoopX = 0; LoopX <= UB_X; LoopX++) {for (int LoopY = 0; LoopY <= UB_Y; LoopY++) {BanArr[LoopX, LoopY] = InputList[LoopY + 1][LoopX];}}//https://codeiq.jp/magazine/2015/02/21755/int[,] CntArr = new int[UB_X + 1, UB_Y + 1];Func<int, int, int> wkFunc = (pX, pY) =>{if (pX < 0 || UB_X < pX) return 0;if (pY < 0 || UB_Y < pY) return 0;return CntArr[pX, pY];};for (int LoopX = 0; LoopX <= UB_X; LoopX++) {for (int LoopY = 0; LoopY <= UB_Y; LoopY++) {if (BanArr[LoopX, LoopY] == '.')CntArr[LoopX, LoopY] = 0;else {int Cnt1 = wkFunc(LoopX - 1, LoopY - 1);int Cnt2 = wkFunc(LoopX, LoopY - 1);int Cnt3 = wkFunc(LoopX - 1, LoopY);int wkMin = Math.Min(Cnt1, Cnt2);wkMin = Math.Min(wkMin, Cnt3);CntArr[LoopX, LoopY] = wkMin + 1;}}}int MaxSeihoukeiLength = CntArr.Cast<int>().Max();if (MaxSeihoukeiLength % 2 == 0) Console.WriteLine(MaxSeihoukeiLength / 2);else Console.WriteLine(MaxSeihoukeiLength / 2 + 1);}}