結果
| 問題 |
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/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);
}
}
明智重蔵