package util;

public class IntArrayList {
    int lenght = 4;
    int lastUnfilledPos = 0;
    int[] arr = new int[4];

    public IntArrayList(){}

    public void add(int a){
        if (lastUnfilledPos < lenght){
            arr[lastUnfilledPos] = a;
            lastUnfilledPos ++;
        }
        else {
            int[] arrTemp = new int[lenght*2];
            System.arraycopy(arr, 0, arrTemp, 0, lenght);
            arr = arrTemp;
            lenght = lenght * 2;
            arr[lastUnfilledPos] = a;
            lastUnfilledPos ++;
        }
    }

    public int get(int pos){
        if (pos < 0 || pos >= lastUnfilledPos){
            return -1;
        }
        return arr[pos];
    }

    public int size(){
        return lastUnfilledPos;
    }

    public void sort(){
        int[] view = new int[lastUnfilledPos];
        System.arraycopy(arr, 0, view, 0, lastUnfilledPos);
        Sorter sorter = new Sorter();
        sorter.mergeSort(view);
        System.arraycopy(view, 0, arr, 0, lastUnfilledPos);
    }

    public int remove(int pos){
        if (pos < 0 || pos >= lastUnfilledPos){
            return -1;
        }
        int removed = arr[pos];
        for (int i = pos; i < lastUnfilledPos -1; i++){
            arr[i] = arr[i+1];
        }
        lastUnfilledPos --;
        return removed;
    }
}
