public static string GetCurrentTime(string[] exactPostTime, string[] showPostTime) { int n = exactPostTime.Length; int[,] startTime = new int[n, 3]; int[,] endTime = new int[n, 3]; /* startTimes and EndTimes are used for maintaining every interval * index 0 for hours * index 1 for minutes * index 2 for seconds */ int hours = 0, minutes = 0, seconds = 0, temp = 0; for (int i = 0; i < n; i++) { string[] exactTime = exactPostTime[i].Split(":"); Int32.TryParse(exactTime[0], out hours); Int32.TryParse(exactTime[1], out minutes); Int32.TryParse(exactTime[2], out seconds); var timeInterval = new TimeInterval(hours, minutes, seconds); string[] showTime = showPostTime[i].Split(" "); if (showTime[1].Equals(SECONDSAGO)) { timeInterval.CalculateStartTime(0, 0, 0); timeInterval.CalculateEndTime(0, 0, 59); } else if (showTime[1].Equals(MINUTESAGO)) { Int32.TryParse(showTime[0], out temp); timeInterval.CalculateStartTime(0, temp, 0); timeInterval.CalculateEndTime(0, 0, 59); } else if (showTime[1].Equals(HOURSAGO)) { Int32.TryParse(showTime[0], out temp); timeInterval.CalculateStartTime(temp, 0, 0); timeInterval.CalculateEndTime(0, 59, 59); } timeInterval.UpdateTimeInterval(startTime, endTime, i); } int[] result = new int[2]; if (FindIntersection(startTime, endTime, result, n)) { return(GettingStringFormat(result)); } else { return("impossible"); } }