class ATM {

    String currency;
    int[] denominations;
    int[] contents;
    
    public ATM(String s, int[] denoms) {
        currency = s;
        denominations = denoms;
        contents = new int[denominations.length];
    }
    
    public String getCurrency() {
        return currency;
    }

    public int getTotal() {
        int total = 0;
        for (int i = 0; i < denominations.length; i++) {
            total = total + denominations[i] * contents[i];
        }
        return total;
    }
    
    public int getQty(int denom) {
        for (int i = 0; i < denominations.length; i++) {
            if (denominations[i] == denom) {
                return contents[i];
            }
        }
        return 0;
    }

    public String toString() {
        String s = "";
        for (int i = 0; i < denominations.length; i++) {
            s = s + contents[i] + " x " + currency + denominations[i] + "; " ;
        }
        return s;
    }

    public void load(int qty, int denom) {
        for (int i = 0; i < denominations.length; i++) {
            if (denominations[i] == denom) {
                contents[i] += qty;
                return;
            }
        }
    }

    public void dispense(int qty, int denom) {
        for (int i = 0; i < denominations.length; i++) {
            if (denominations[i] == denom && contents[i] >= qty) {
                contents[i] -= qty;
                return;
            }
        }
    }
    
    /* 
        Use of a helper method called, e.g., indexOf, that gets called by
        getQty, load and dispense is a nice alternative solution: see
        lectures
    */

}
