/*
Veidoja : Kims Matukevičs
Grupa: 110
Praktiskais darbs 6.3
Izmantotais Compiler : www.onlinegdb.com 
*/

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[][] v)
    {
        Console.WriteLine("Zale:");
        for (int i = 0; i < v.Length; i++)
        {
            Console.Write("Rinda " + (i + 1) + ": ");
            for (int j = 0; j < v[i].Length; j++)
            {
                if (v[i][j] == 0)
                {
                    Console.Write("[O]");
                }
                else
                {
                    Console.Write("[X]");
                }
            }
            Console.WriteLine();
        }
        Console.WriteLine();
    }

    static bool RezervetVietu(int[][] v, List<string> r)
    {
        Console.Write("Ievadi rindas numuru: ");
        bool okRinda = int.TryParse(Console.ReadLine(), out int rinda);
        Console.Write("Ievadi vietas numuru: ");
        bool okVieta = int.TryParse(Console.ReadLine(), out int vieta);

        if (!okRinda || !okVieta)
        {
            Console.WriteLine("Nederigi dati.");
            return false;
        }

        if (rinda < 1 || rinda > v.Length)
        {
            Console.WriteLine("Tada rinda neeksiste.");
            return false;
        }

        if (vieta < 1 || vieta > v[rinda - 1].Length)
        {
            Console.WriteLine("Tada vieta neeksiste.");
            return false;
        }

        if (v[rinda - 1][vieta - 1] == 1)
        {
            Console.WriteLine("Vieta jau ir rezerveta.");
            return false;
        }

        v[rinda - 1][vieta - 1] = 1;
        r.Add("Rinda " + rinda + ", Vieta " + vieta);
        Console.WriteLine("Rezervacija veiksmiga.");
        return true;
    }

    static void ApstradatIzveli()
    {
        int izvele = 0;
        do
        {
            Console.WriteLine("1 - Paradit zali");
            Console.WriteLine("2 - Rezervet vietu");
            Console.WriteLine("3 - Paradit rezervaciju sarakstu");
            Console.WriteLine("4 - Iziet");
            Console.Write("Izvele: ");

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

            switch (izvele)
            {
                case 1:
                    ParaditZali(vietas);
                    break;

                case 2:
                    RezervetVietu(vietas, rezervacijas);
                    Console.WriteLine();
                    break;

                case 3:
                    Console.WriteLine("Rezervacijas:");
                    if (rezervacijas.Count == 0)
                    {
                        Console.WriteLine("Nav nevienas rezervacijas.");
                    }
                    else
                    {
                        foreach (var x in rezervacijas)
                        {
                            Console.WriteLine(x);
                        }
                    }
                    Console.WriteLine();
                    break;

                case 4:
                    Console.WriteLine("Programma aptureta.");
                    break;

                default:
                    Console.WriteLine("Nederiga izvele.");
                    break;
            }

        } while (izvele != 4);
    }
}