/* 
    Veidoja: Kirills Erdmanis
    Grupa: 110
    Praktiskais darbs 6.3
*/    

using System;
using System.Collections.Generic;

class Program
{
    static int[][] vietas = new int[][]
    {
        new int[] { 0, 0, 0, 0, 0 },
        new int[] { 0, 0, 0, 0, 0, 0, 0 },
        new int[] { 0, 0, 0, 0 }
    };

    static List<string> rezervacijas = new List<string>();

    static void Main()
    {
        ApstradatIzveli();
    }

    static void ParaditZali(int[][] vietas)
    {
        for (int i = 0; i < vietas.Length; i++)
        {
            Console.Write("Rinda " + (i + 1) + ": ");
            for (int j = 0; j < vietas[i].Length; j++)
            {
                if (vietas[i][j] == 0)
                    Console.Write("[O] ");
                else
                    Console.Write("[X] ");
            }
            Console.WriteLine();
        }
    }

    static bool RezervetVietu(int[][] vietas, List<string> rezervacijas)
    {
        Console.Write("Ievadi rindas numuru: ");
        if (!int.TryParse(Console.ReadLine(), out int rinda) ||
            rinda < 1 || rinda > vietas.Length)
        {
            Console.WriteLine("Nepareiza rinda.");
            return false;
        }

        Console.Write("Ievadi vietas numuru: ");
        if (!int.TryParse(Console.ReadLine(), out int vieta) ||
            vieta < 1 || vieta > vietas[rinda - 1].Length)
        {
            Console.WriteLine("Nepareiza vieta.");
            return false;
        }

        if (vietas[rinda - 1][vieta - 1] == 1)
        {
            Console.WriteLine("Vieta jau rezervēta.");
            return false;
        }

        vietas[rinda - 1][vieta - 1] = 1;
        rezervacijas.Add("Rinda " + rinda + ", Vieta " + vieta);
        Console.WriteLine("Rezervācija veiksmīga.");
        return true;
    }

    static void ApstradatIzveli()
    {
        int izvele;

        do
        {
            Console.WriteLine("\n1 - ParaditZali");
            Console.WriteLine("2 - RezervetVietu");
            Console.WriteLine("3 - ParaditRezervacijas");
            Console.WriteLine("4 - Iziet");
            Console.Write("Izvēle: ");

            int.TryParse(Console.ReadLine(), out izvele);

            switch (izvele)
            {
                case 1:
                    ParaditZali(vietas);
                    break;
                case 2:
                    RezervetVietu(vietas, rezervacijas);
                    break;
                case 3:
                    if (rezervacijas.Count == 0)
                        Console.WriteLine("Nav rezervāciju.");
                    else
                        foreach (string r in rezervacijas)
                            Console.WriteLine(r);
                    break;
                case 4:
                    Console.WriteLine("Programma beidzas.");
                    break;
                default:
                    Console.WriteLine("Nepareiza izvēle.");
                    break;
            }

        } while (izvele != 4);
    }
}
