トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
ABC-070-B Two Switches
■■■問題■■■
AliceとBobは、ロボットを制御するためのスイッチを1つずつ持っており、ロボットを動かしています。
Aliceはロボットを動かし始めてA秒後にスイッチを押し始め、
ロボットを動かし始めてB秒後にスイッチを離しました。
Bobはロボットを動かし始めてC秒後にスイッチを押し始め、
ロボットを動かし始めてD秒後にスイッチを離しました。
AliceとBobが、二人ともスイッチを押していた秒数を求めてください。
■■■入力■■■
A B C D
●0 <= A < B <= 100
●0 <= C < D <= 100
●入力は全て整数である
■■■出力■■■
AliceとBobが二人ともスイッチを押していた秒数を出力せよ。
C#のソース
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static string InputPattern = "Input1";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("0 75 25 100");
//50
//ロボットを動し始めて0秒後から75秒後までの間、Aliceはスイッチを押していました。
//一方、ロボットを動し始めて25秒後から100秒後までの間、Bobはスイッチを押していました。
//したがって、二人が同時にスイッチを押していた時間は、
//ロボットを動し始めて25秒後から75秒後までの50秒です。
}
else if (InputPattern == "Input2") {
WillReturn.Add("0 33 66 99");
//0
//AliceとBobが同時にスイッチを押していないので、答えは0秒です
}
else if (InputPattern == "Input3") {
WillReturn.Add("10 90 20 80");
//60
}
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];
int C = wkArr[2];
int D = wkArr[3];
int DupSec = 0;
for (int I = A; I <= B; I++) {
if (C <= I && I <= D) {
DupSec++;
}
}
if (DupSec == 0) Console.WriteLine(0);
else Console.WriteLine(DupSec - 1);
}
}
解説
スイッチを共通で押してる時間を、ナイーブに調べてます。