using System.Collections;
using System.Collections.Generic;
public static void Main()
Console.WriteLine("Greetings SpoiledTechie.com");
TimeSpan minSpan = TimeSpan.Zero;
TimeSpan maxSpan = new TimeSpan(10,20, 0);
List<Tuple<TimeSpan,TimeSpan>> availableIntervals = new List<Tuple<TimeSpan,TimeSpan>>();
availableIntervals.Add(new Tuple<TimeSpan, TimeSpan>(new TimeSpan(2,30,0), new TimeSpan(3,43,0)));
availableIntervals.Add(new Tuple<TimeSpan, TimeSpan>(new TimeSpan(4,25,0), new TimeSpan(4,59,0)));
availableIntervals.Add(new Tuple<TimeSpan, TimeSpan>(new TimeSpan(7,21,0), new TimeSpan(9,25,0)));
List<Tuple<TimeSpan,TimeSpan>> missingIntervals = ComputeMissingTimeSpans(availableIntervals,minSpan,maxSpan);
foreach(var interval in missingIntervals)
Console.WriteLine(interval.Item1.ToString() + " - " + interval.Item2.ToString());
private static List<Tuple<TimeSpan,TimeSpan>> ComputeMissingTimeSpans(List<Tuple<TimeSpan,TimeSpan>> availableIntervals, TimeSpan minSpan, TimeSpan maxSpan)
List<Tuple<TimeSpan,TimeSpan>> missingTime = new List<Tuple<TimeSpan,TimeSpan>>();
if(availableIntervals.Count == 0)
missingTime.Add(new Tuple<TimeSpan, TimeSpan>(minSpan, maxSpan));
foreach(var interval in availableIntervals){
if((interval.Item1 - minSpan).TotalSeconds > 1 )
missingTime.Add(new Tuple<TimeSpan, TimeSpan>(minSpan, interval.Item1.Add(TimeSpan.FromSeconds(-1))));
minSpan = interval.Item2.Add(TimeSpan.FromSeconds(1));
if((maxSpan - minSpan).TotalSeconds > 1)
missingTime.Add(new Tuple<TimeSpan, TimeSpan>(minSpan, maxSpan));