Найти сумму объединения отрезков в c#

Всем привет.
Задача такая: "Пользователь вводит n-е кол-во отрезков и задаёт им по две координаты.
Необходимо найти сумму объединения отрезков.
Т.е. если я введу а(1,3),в(2,4) и с(8,10), то сумма будет равна 5.

Такой код у меня пока получился(проблемы возникают, когда программа доходит до условия положений двух отрезков) :

        int n,i;
        int a, b;
        int t;
        int sum;
       
        //Пользователь вводит количество отрезков
        Console.Write("Введите число отрезков: ");
        n = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine();

        //Создаём массивы начал и концов отрезков
        int[] begin = new int[n];
        int[] end = new int[n];

        //Пользователь вводит координаты отрезков, которые присваиваются ячейкам массивов
        for( i = 0; i < n; i++)
        {
            Console.Write($"Введите 1-ю точку {i+1}-го отрезка: ");
            a = Convert.ToInt32(Console.ReadLine());
            Console.Write($"Введите 2-ю точку {i+1}-го отрезка: ");
            b = Convert.ToInt32(Console.ReadLine());
            begin[i] = a;
            end[i] = b;
        } 

        //Выделение общего
        for(t = 0 ; t < n ; t++)
            for (i = 0; i < n-1; i++)
            {
                begin[t] = begin[i];
                end[t] = end[i];

                if ((begin[i++] >= begin[t]) & (begin[i++] <= end[t]) & (end[i++] > end[t]))
                {
                    begin[i++] = begin[t];
                    sum = end[i++] - begin[t];
                    Console.WriteLine($"1 {t}sum=" + sum);
                }
                else if ((begin[i++] > begin[t]) & (begin[i++] < end[t]) & (end[i++] <= end[t]))
                {
                    begin[i++] = begin[t];
                    end[i++] = end[t];
                    sum = end[t] - begin[i++];
                    Console.WriteLine("2sum=" + sum);
                }
                else if ((begin[i++] < begin[t]) & (end[i++] <= end[t]) & (end[i++] >= begin[t]))
                {
                    end[i++] = end[t];
                    sum = end[t] - begin[i++];
                    Console.WriteLine("3sum=" + sum);
                }
                else if ((end[i++] <= begin[t]) | ((begin[i++] >= end[t])))
                {
                    sum = (end[t] - begin[t]) + (end[i++] - begin[i++]);
                    Console.WriteLine("4sum=" + sum);
                }
                else if ((begin[i++] < begin[t]) & (end[i++] > end[t]))
                {
                    sum = end[i++] - begin[i++];
                    Console.WriteLine("5sum=" + sum);
                }

Поместить координаты отрезков в список. Дальше сравнить каждый с каждым, удаляя один из пересекающихся отрезков и модифицируя другой. Пересекаются отрезки (x!,y1) и (x2,y2) если x2<y1 И y2>x1, новый отрезок (min(x1,x2),max(y1,y2)). Дальше просто сложить длины оставшихся не пересекающихся отрезков

А вы могли бы написать код?
Я просто совсем ещё новичок и слабо представляю, как это реализовать.
Буду весьма благодарен

Так задавайте вопросы про то, что не получается. Во время формулирования вопросов может и решение найдется :rubberduck2:

Список — List.
https://metanit.com/sharp/tutorial/4.5.php

И для координат удобнее создать какой-нибудь класс с полями x, y вместо двух списков/массивов.
https://metanit.com/sharp/tutorial/3.1.php
Или взять готовый из стандартных библиотек
https://docs.microsoft.com/en-us/dotnet/api/system.drawing.point
https://www.dotnetperls.com/point

Так именно поэтому и нужно практиковаться решая задачи )