トップページに戻る    次の競技プログラミングの問題へ    前の競技プログラミングの問題へ

ARC-048-A 階段の下

■■■問題■■■

年商10億円を達成したAtCoder社のオフィスビルは、地上10億階地下10億階の超高層ビルです。
ロビーは1階にあり、その上には 2,3,4, ・・・ ,10億階、
その下には地下 1,2, ・・・ ,10億階というように階が続きます。

あいにくすべてのエレベーターが壊れてしまったので、
高橋君はA階からそれより上にあるB階まで階段で上がることにしました。

AtCoder社のオフィスビルにはすべての上下に隣り合う階の間に階段があります。
また、高橋君は階段を下ることはしません。

高橋君は階段を何階分上る必要があるでしょうか。
ただし、x>0 に対し、-x階は地下x階のことを表すこととします。

■■■入力■■■

A B

1行目には、整数 A,B(-10億 <= A<B <= 10億,A!=0,B!=0)が空白を区切りとして与えられる。

■■■出力■■■

高橋君が何階分の階段を上る必要があるかを表す整数1つを出力せよ。
出力の最後には改行を忘れないこと。


C#のソース

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

class Program
{
    static string InputPattern = "InputX";

    static List<string> GetInputList()
    {
        var WillReturn = new List<string>();

        if (InputPattern == "Input1") {
            WillReturn.Add("3 6");
            //3
            //3階から4階、4階から5階、5階から6階に上がる階段を上る必要があります
        }
        else if (InputPattern == "Input2") {
            WillReturn.Add("-1 1");
            //1
            //地下1階の上の階は地上1階です
        }
        else if (InputPattern == "Input3") {
            WillReturn.Add("-7 -2");
            //5
        }
        else {
            string wkStr;
            while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
        }
        return WillReturn;
    }

    static void Main()
    {
        List<string> InputList = GetInputList();
        int[] wkArr = InputList[0].Split(' ').Select(X => int.Parse(X)).ToArray();

        int A = wkArr[0];
        int B = wkArr[1];

        if (A > 0 && B > 0) {
            Console.WriteLine(B - A);
        }
        else if (A < 0 && B < 0) {
            Console.WriteLine(B - A);
        }
        else {
            Console.WriteLine(B - A - 1);
        }
    }
}


解説

正負が一致する場合と、不一致の場合で
場合分けしてます。