結果

問題 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.

ソースコード

diff #
プレゼンテーションモードにする

using System;
using System.Collections.Generic;
using System.Linq;
//YukiCoder402
//http://yukicoder.me/problems/no/402
class 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);
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0