using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace OneCompiler
{
public class Program
{
public static void Main(string[] args)
{
int[][] intervals =
{
new int[]{1, 3},
new int[]{2, 6},
new int[]{8, 10},
new int[]{15, 18}
};
var mergedIntervals = MergeIntervals(intervals);
for (int i = 0; i < mergedIntervals.Length; i++)
{
Console.Write("[" + mergedIntervals[i][0] + "," + mergedIntervals[i][1] + "]" + " ");
}
}
private static int StringToInteger(string s)
{
return int.Parse(s);
}
private static int[][] MergeIntervals(int[][] arr)
{
int n = arr.Length;
if (n == 0 || n == 1)
{
return arr;
}
var stack = new Stack<int[]>();
stack.Push(arr[0]);
for (int i = 1; i < n; i++)
{
var top = stack.Peek();
if (arr[i][0] > top[1])
{
stack.Push(arr[i]);
}
else
{
if (arr[i][1] > top[1])
{
top = stack.Pop();
top[1] = arr[i][1];
stack.Push(top);
}
}
}
var result = stack.ToArray();
Array.Reverse(result);
return result;
}
}
}