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

namespace ConsoleApp1
{
    public class Adat
    {
        public int helyezes;
        public int sportolok_szama;
        public string sportag;
        public string versenyszam;
        public int olimpiaiPont = 0;

        public Adat(int hely, int szam, string sport, string vszam)
        {
            helyezes = hely;
            sportolok_szama = szam;
            sportag = sport;
            versenyszam = vszam;
        }
    }
    class Program
    {
        static void TobbPont_Kiir(int uszas, int torna)
        {

            if (uszas > torna)
            {
                Console.WriteLine("Úszás sportágban szereztek több érmet.");
            }
            else if (uszas < torna)
            {
                Console.WriteLine("Torna sportágban szereztek több érmet.");
            }
            else
            {
                Console.WriteLine("Egyenlő volt az érmek száma.");
            }
        }
        static void Main(string[] args)
        {
            FileStream fs = new FileStream("helsinki.txt", FileMode.Open, FileAccess.Read);
            StreamReader sr = new StreamReader(fs);

            List<Adat> adatok = new List<Adat>();

            string sor = sr.ReadLine();
            while (sor != null)
            {
                string[] xd = sor.Split(' ');
                Adat asd = new Adat(Convert.ToInt32(xd[0]), Convert.ToInt32(xd[1]), xd[2], xd[3]);
                adatok.Add(asd);
                sor = sr.ReadLine();
            }

            sr.Close();
            fs.Close();

            int pontszerzok = 0;
            int arany = 0;
            int ezust = 0;
            int bronz = 0;
            int pontok = 0;
            int uszas = 0;
            int torna = 0;

            foreach (var item in adatok)
            {
                switch (item.helyezes)
                {
                    case 1:
                        arany++;
                        pontok += 7;
                        item.olimpiaiPont = 7;
                        if (item.sportag == "uszas")
                        {
                            uszas++;
                        }
                        if (item.sportag == "torna")
                        {
                            torna++;
                        }

                        goto pont;
                    case 2:
                        ezust++;
                        pontok += 5;
                        item.olimpiaiPont = 5;
                        if (item.sportag == "uszas")
                        {
                            uszas++;
                        }
                        if (item.sportag == "torna")
                        {
                            torna++;
                        }
                        goto pont;
                    case 3:
                        bronz++;
                        pontok += 4;
                        item.olimpiaiPont = 4;
                        if (item.sportag == "uszas")
                        {
                            uszas++;
                        }
                        if (item.sportag == "torna")
                        {
                            torna++;
                        }
                        goto pont;
                    case int n when n > 3 && n < 7 && n != 0:
                        switch (n)
                        {
                            case 4:
                                pontok += 3;
                                item.olimpiaiPont = 3;
                                break;
                            case 5:
                                pontok += 2;
                                item.olimpiaiPont = 2;
                                break;
                            case 6:
                                pontok += 1;
                                item.olimpiaiPont = 1;
                                break;
                            default:
                                break;
                        }
                        goto pont;
                    pont:
                        pontszerzok++;
                        break;
                    default:
                        break;
                }
            }

            Console.WriteLine("3.feladat:");
            Console.WriteLine($"Pontszerző helyezések száma: {pontszerzok}");
            Console.WriteLine("4.feladat:");
            Console.WriteLine($"Arany: {arany}");
            Console.WriteLine($"Ezüst: {ezust}");
            Console.WriteLine($"Bronz: {bronz}");
            Console.WriteLine($"Összesen: {arany + ezust + bronz}");
            Console.WriteLine("5.feladat:");
            Console.WriteLine($"Olimpiai pontok száma: {pontok}");
            Console.WriteLine("6.feladat:");
            TobbPont_Kiir(uszas, torna);

            FileStream fileStream = new FileStream("helsinki2.txt", FileMode.Create, FileAccess.Write);
            StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.Unicode);

            foreach (var item in adatok)
            {
                string reg = @"kajak.kenu";
                Regex re = new Regex(reg);
                if (item.sportag == "kajakkenu" || re.IsMatch(item.sportag))
                {
                    streamWriter.WriteLine($"{item.helyezes} {item.sportolok_szama} {item.olimpiaiPont} kajak-kenu {item.versenyszam}");
                }
                else
                {
                    streamWriter.WriteLine($"{item.helyezes} {item.sportolok_szama} {item.olimpiaiPont} {item.sportag} {item.versenyszam}");
                }

            }
            streamWriter.Close();
            fileStream.Close();

            int legtobb = 0;
            int hely = 0;

            for (int i = 0; i < adatok.Count; i++)
            {
                if (adatok[i].sportolok_szama > legtobb)
                {
                    legtobb = adatok[i].sportolok_szama;
                    hely = i;
                }
            }




            Console.WriteLine("8.feladat:");
            Console.WriteLine($"Helyezés: {adatok[hely].helyezes}");
            Console.WriteLine($"Sportág: {adatok[hely].sportag}");
            Console.WriteLine($"Versenyszám: {adatok[hely].versenyszam}");
            Console.WriteLine($"Sportolók száma: {adatok[hely].sportolok_szama}");
        }
    }
}
