// Renārs Pujats, 110.Grupa
//PR7-1
//Compiler: OnlineGDB.com
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        
        List<double> izdevumi = IevadietIzdevumus();
 
        Console.Write("Ievadiet minimālo izdevumu slieksni: ");
        double slieksnis = double.Parse(Console.ReadLine());

        List<double> filtrētieIzdevumi = FiltretIzdevumus(izdevumi, slieksnis);

        double diapazons = AprekinatMainibu(filtrētieIzdevumi);

        Console.WriteLine(" REZULTĀTI ");
        Console.WriteLine("Filtrētie izdevumi: " + string.Join(", ", filtrētieIzdevumi));
        Console.WriteLine($"Izdevumu diapazons: {diapazons}");
    }

    static List<double> IevadietIzdevumus()
    {
        List<double> dati = new List<double>();

        while (true)
        {
            Console.Write("Ievadiet izdevumu summu (vai 'gals'): ");
            string ievade = Console.ReadLine();

            if (ievade.ToLower() == "gals" || ievade == "")
                break;

            if (double.TryParse(ievade, out double summa))
                dati.Add(summa);
            else
                Console.WriteLine("Nekorekta summa! Mēģiniet vēlreiz.");
        }

        return dati;
    }

    static List<double> FiltretIzdevumus(List<double> izejasDati, double slieksnis)
    {
        List<double> filtrētie = new List<double>();

        foreach (double izdevums in izejasDati)
        {
            if (izdevums < slieksnis)
            {
                continue;  
            }

            filtrētie.Add(izdevums);
        }

        return filtrētie;
    }

    static double AprekinatMainibu(List<double> dati)
    {
        if (dati.Count == 0)
            return 0;

        double min = double.MaxValue;
        double max = double.MinValue;

        foreach (double d in dati)
        {
            if (d < min) min = d;
            if (d > max) max = d;
        }

        return Math.Abs(max - min);
    }
}
