using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace ConsoleApp1
{
    public class Egyed
    {
        public string versenyzo, kategoria, versenyido;
        public int rajtszam, tavszazalek;
        public double idooraban;

        public Egyed(string Versenyzo, int Rajtszam, string Kategoria, string Versenyido,  int Tavszazalek)
        {
            versenyido = Versenyido;
            versenyzo = Versenyzo;
            kategoria = Kategoria;
            rajtszam = Rajtszam;
            tavszazalek = Tavszazalek;
            idooraban = IdoOraban();
        }

        public double IdoOraban()
        {
            string[] ido = versenyido.Split(':');
            int[] idoint = { Convert.ToInt32(ido[0]), Convert.ToInt32(ido[1]), Convert.ToInt32(ido[2]) };
            return idoint[0] + idoint[1] / 60 + idoint[2] / 3600;
        }
    }
    class Program
    {
        private static int Feladat3(List<Egyed> adatok)
        {
            int cntr = 0;
            foreach (var item in adatok)
            {
                cntr++;
            }
            return cntr;
        }

        private static int Feladat4(List<Egyed> adatok)
        {
            int counter = 0;
            foreach (var item in adatok)
            {
                if (item.kategoria != "Ferfi" && item.tavszazalek == 100)
                {
                    counter++;
                }
            }
            return counter;
        }

        private static void Feladat5(List<Egyed> adatok, string nev)
        {
            bool tartalmaz = false;
            int ind = -1;
            for (int i = 0; i < adatok.Count; i++)
            {
                if (adatok[i].versenyzo == nev)
                {
                    tartalmaz = true;
                    ind = i;
                    break;
                }
            }

            if (tartalmaz)
            {
                Console.WriteLine($"\tIndult egyéniben a sportoló? Igen");
                if (adatok[ind].tavszazalek == 100)
                {
                    Console.WriteLine("\tTeljesítette a teljes távot? Igen");
                }
                else
                {
                    Console.WriteLine("\tTeljesítette a teljes távot? Nem");
                }
            }
            else
            {
                Console.WriteLine($"\tIndult egyéniben a sportoló? Nem");
            }
            
        }

        private static double Feladat7(List<Egyed> adatok)
        {
            int cntr = 0;
            double osszido = 0;
            foreach (var item in adatok)
            {
                if (item.tavszazalek == 100 && item.kategoria == "Ferfi")
                {
                    cntr++;
                    osszido += item.idooraban;
                }
            }

            return osszido / cntr;
        }

        private static string Feladat8F(List<Egyed> adatok)
        {
            int ind = 0;
            int cntr = 0;
            foreach (var item in adatok)
            {
                if (adatok[ind].idooraban > item.idooraban && item.tavszazalek == 100 && item.kategoria == "Ferfi")
                {
                    ind = cntr;
                }
                cntr++;
            }

            return $"{adatok[ind].versenyzo} ({adatok[ind].rajtszam}.) - {adatok[ind].versenyido}";
        }

        private static string Feladat8N(List<Egyed> adatok)
        {
            int ind = 0;
            int cntr = 0;
            foreach (var item in adatok)
            {
                if (adatok[ind].idooraban > item.idooraban && item.tavszazalek == 100 && item.kategoria == "Noi")
                {
                    ind = cntr;
                }
                cntr++;
            }

            return $"{adatok[ind].versenyzo} ({adatok[ind].rajtszam}.) - {adatok[ind].versenyido}";
        }
        static void Main(string[] args)
        {
            List<Egyed> adatok = new List<Egyed>();

            FileStream fileStream = new FileStream("ub2017egyeni.txt", FileMode.Open, FileAccess.Read);
            StreamReader streamReader = new StreamReader(fileStream);
            string sor = streamReader.ReadLine();
            sor = streamReader.ReadLine();
            while (sor != null)
            {
                string[] arr = sor.Split(';');
                Egyed egyed = new Egyed(arr[0], Convert.ToInt32(arr[1]), arr[2], arr[3], Convert.ToInt32(arr[4]));
                adatok.Add(egyed);
                sor = streamReader.ReadLine();
            }

            streamReader.Close();
            fileStream.Close();

            
            Console.ForegroundColor = ConsoleColor.Magenta;
            Console.BackgroundColor = ConsoleColor.Blue;
            

            Console.WriteLine($"3. feladat: Egyéni indulók: {Feladat3(adatok)} fő");
            Console.WriteLine($"4. feladat: Célba érkező női sportolók: {Feladat4(adatok)} fő");
            Console.WriteLine($"5. feladat: Kérem a sporotló nevét: ");
            string sportolo = Console.ReadLine();
            Feladat5(adatok, sportolo);
            Console.WriteLine($"7. feladat: Átlagos idő: {Feladat7(adatok)} óra");
            Console.WriteLine($"8. feladat: Verseny győztesei:");
            Console.WriteLine($"\tNők: {Feladat8N(adatok)}");
            Console.WriteLine($"\tFérfiak: {Feladat8F(adatok)}");
            Console.ResetColor();
        }
    }
}
