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

namespace _313_spr_08_lecture_x
{
    class Program
    {
        static void Main(string[] args)
        {
            Random r = new Random();
            ArrayList myArrayList = new ArrayList();
            List myList = new List();

            DateTime start_L = DateTime.Now;
            
            for (int i = 0; i < 100000; i++)
            {
                myList.Add(r.Next(1000));
            }
            long sum = AddAllListElements(myList);
            Console.WriteLine("the sum is " + sum);
            for (int i = 0; i < 100000; i++)
            {
                myList.RemoveAt(0);
            }

            DateTime end_L = DateTime.Now;

            TimeSpan time_consumed_L = end_L.Subtract(start_L);

            Console.WriteLine("Time to insert elements via LIST = " + time_consumed_L.TotalMilliseconds);

            DateTime start_AL = DateTime.Now;

            for (int i = 0; i < 100000; i++)
            {
                myArrayList.Add(r.Next(1000));
            }
            sum = AddAllElements(myArrayList);
            Console.WriteLine("the sum is " + sum);
            for (int i = 0; i < 100000; i++)
            {
                myArrayList.RemoveAt(0);
            }

            DateTime end_AL = DateTime.Now;

            TimeSpan time_consumed_AL = end_AL.Subtract(start_AL);

            Console.WriteLine("Time to insert elements via ARRAYLIST= " + time_consumed_AL.TotalMilliseconds);

//            PrintArrayList(myArrayList);
        }

        private static long AddAllElements(ArrayList myArrayList)
        {
            long rv = 0;
            for (int i = 0; i < myArrayList.Count; i++)
            {
//                rv += Long.Parse(myArrayList[i].ToString());
                rv += (int)myArrayList[i];
            }
            return rv;
        }

        private static long AddAllListElements(List myList)
        {
            long rv = 0;
            for (int i = 0; i < myList.Count; i++)
            {
                rv += myList[i];
            }
            return rv;
        }


        private static void PrintArrayList(ArrayList myArrayList)
        {
            foreach (object o in myArrayList)
                Console.WriteLine(o);
        }
    }
}