結果
| 問題 | 
                            No.370 道路の掃除
                             | 
                    
| コンテスト | |
| ユーザー | 
                             明智重蔵
                         | 
                    
| 提出日時 | 2016-06-11 19:50:47 | 
| 言語 | C#(csc)  (csc 3.9.0)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 36 ms / 2,000 ms | 
| コード長 | 2,462 bytes | 
| コンパイル時間 | 1,020 ms | 
| コンパイル使用メモリ | 113,632 KB | 
| 実行使用メモリ | 27,648 KB | 
| 最終ジャッジ日時 | 2024-10-14 16:58:53 | 
| 合計ジャッジ時間 | 3,140 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge3 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 34 | 
コンパイルメッセージ
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;
//No.370 道路の掃除
class Program
{
    static string InputPattern = "InputX";
    static List<string> GetInputList()
    {
        var WillReturn = new List<string>();
        if (InputPattern == "Input1") {
            WillReturn.Add("3 5");
            WillReturn.Add("1");
            WillReturn.Add("2");
            WillReturn.Add("3");
            WillReturn.Add("4");
            WillReturn.Add("5");
            //3
        }
        else if (InputPattern == "Input2") {
            WillReturn.Add("2 4");
            WillReturn.Add("-5");
            WillReturn.Add("-1");
            WillReturn.Add("2");
            WillReturn.Add("5");
            //4
        }
        else if (InputPattern == "Input3") {
            WillReturn.Add("2 5");
            WillReturn.Add("-3");
            WillReturn.Add("-1");
            WillReturn.Add("0");
            WillReturn.Add("2");
            WillReturn.Add("4");
            //1
        }
        else {
            string wkStr;
            while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
        }
        return WillReturn;
    }
    static void Main()
    {
        List<string> InputList = GetInputList();
        int[] wkArr = { };
        Action<string> SplitAct = pStr =>
            wkArr = pStr.Split(' ').Select(X => int.Parse(X)).ToArray();
        SplitAct(InputList[0]);
        int N = wkArr[0];
        int[] DArr = InputList.Skip(1).Select(X => int.Parse(X)).ToArray();
        Array.Sort(DArr);
        int UB = DArr.GetUpperBound(0);
        int Answer = int.MaxValue;
        for (int I = 0; I <= UB; I++) {
            int MinInd = I;
            int MaxInd = I + N - 1;
            if (MaxInd > UB) break;
            int MinD = DArr[MinInd];
            int MaxD = DArr[MaxInd];
            int KyoriSum = 0;
            if (MinD > 0) { //両方とも正の場合
                KyoriSum = MaxD;
            }
            else if (MaxD < 0) { //両方とも負の場合
                KyoriSum = Math.Abs(MinD);
            }
            else { //符号が異なる場合
                int wkSum1 = Math.Abs(MinD) * 2 + MaxD;
                int wkSum2 = Math.Abs(MinD) + MaxD * 2;
                KyoriSum = Math.Min(wkSum1, wkSum2);
            }
            if (Answer > KyoriSum)
                Answer = KyoriSum;
        }
        Console.WriteLine(Answer);
    }
}
            
            
            
        
            
明智重蔵