using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EsempioList
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> listaNumeriInteri = new List<int>();

            Console.WriteLine("Capacità della lista: " + listaNumeriInteri.Capacity);
            Console.WriteLine("Lunghezza della lista: " + listaNumeriInteri.Count);

            Console.ReadLine();

            Console.WriteLine("Aggiungo un elemento");
            listaNumeriInteri.Add(75);

            Console.WriteLine("Capacità della lista: " + listaNumeriInteri.Capacity);
            Console.WriteLine("Lunghezza della lista: " + listaNumeriInteri.Count);

            Console.ReadLine();

            Console.WriteLine("Aggiungo altri 3 elementi");
            listaNumeriInteri.Add(23);
            listaNumeriInteri.Add(53);
            listaNumeriInteri.Add(90);

            Console.WriteLine("Capacità della lista: " + listaNumeriInteri.Capacity);
            Console.WriteLine("Lunghezza della lista: " + listaNumeriInteri.Count);

            Console.ReadLine();

            Console.WriteLine("Aggiungo un elemento");
            listaNumeriInteri.Add(2);


            Console.WriteLine("Capacità della lista: " + listaNumeriInteri.Capacity);
            Console.WriteLine("Lunghezza della lista: " + listaNumeriInteri.Count);

            Console.ReadLine();

            Console.WriteLine("\nStampa elementi\n");

            foreach (int elementoLista in listaNumeriInteri)
            {
                Console.WriteLine(elementoLista);
            }

            Console.ReadLine();


            int[] vettoreInteri = new int[5] { 5, 62, 37, 44, 95 };

            listaNumeriInteri.AddRange(vettoreInteri);




            Console.WriteLine("\nStampa elementi dopo AddRange\n");

            foreach (int elementoLista in listaNumeriInteri)
            {
                Console.WriteLine(elementoLista);
            }

            Console.ReadLine();


            listaNumeriInteri.Sort();



            Console.WriteLine("\nStampa elementi dopo Sort\n");

            foreach (int elementoLista in listaNumeriInteri)
            {
                Console.WriteLine(elementoLista);
            }

            Console.ReadLine();


            Console.WriteLine("\nRicerca elemento\n");

            int elementoDaRicercare = 500;

            int indiceElementoDaRicercare = listaNumeriInteri.BinarySearch(elementoDaRicercare);

            if (indiceElementoDaRicercare >=0)
            {
                Console.WriteLine("Il numero " + elementoDaRicercare + " è presente in posizione: " + (indiceElementoDaRicercare+1));
            }
            else
            {
                Console.WriteLine("Il numero " + elementoDaRicercare + " non è presente");
            }

            Console.ReadLine();





            Console.WriteLine("\nRemozione elemento\n");


            listaNumeriInteri.Remove(37);


            Console.WriteLine("\nStampa elementi dopo Remove\n");

            foreach (int elementoLista in listaNumeriInteri)
            {
                Console.WriteLine(elementoLista);
            }

            Console.ReadLine();




            Console.WriteLine("\nInserimento elemento nella lista\n");

            listaNumeriInteri.Insert(2, 1000);

            
            Console.WriteLine("\nStampa elementi dopo Insert\n");

            foreach (int elementoLista in listaNumeriInteri)
            {
                Console.WriteLine(elementoLista);
            }

            Console.ReadLine();

        }
    }
}
