package codejam;

import fixjava.Pair;

public class Utils {

	public static long minLong(long firstVal, long... otherVals) {
		long minVal = firstVal;
		for (int i = 0; i < otherVals.length; i++)
			minVal = Math.min(firstVal, otherVals[i]);
		return minVal;
	}

	public static int minInt(int firstVal, int... otherVals) {
		int minVal = firstVal;
		for (int i = 0; i < otherVals.length; i++)
			minVal = Math.min(firstVal, otherVals[i]);
		return minVal;
	}

	public static float minFloat(float firstVal, float... otherVals) {
		float minVal = firstVal;
		for (int i = 0; i < otherVals.length; i++)
			minVal = Math.min(firstVal, otherVals[i]);
		return minVal;
	}

	/**
	 * ArgMin returned as a Pair<Integer, Integer>(index, value). Array must
	 * have at least one value.
	 */
	public static Pair<Integer, Integer> argMin(int[] arr) {
		int min = arr[0];
		int argMin = 0;
		for (int i = 1; i < arr.length; i++) {
			if (arr[i] < min) {
				min = arr[i];
				argMin = i;
			}
		}
		return new Pair<Integer, Integer>(argMin, min);
	}

	/**
	 * ArgMax returned as a Pair<Integer, Integer>(index, value). Array must
	 * have at least one value.
	 */
	public static Pair<Integer, Integer> argMax(int[] arr) {
		int max = arr[0];
		int argMax = 0;
		for (int i = 1; i < arr.length; i++) {
			if (arr[i] > max) {
				max = arr[i];
				argMax = i;
			}
		}
		return new Pair<Integer, Integer>(argMax, max);
	}

}

import java.io.*;
import java.nio.charset.Charset;
import java.nio.file.Path;
import java.util.ArrayList;

public class ReadWriter
{
    public ArrayList<String> readFile(String path){
        File file = new File(path);
        ArrayList<String> strings = new ArrayList<String>();
        BufferedReader reader = null;
        try{
            reader = new BufferedReader(new FileReader(file));
            String text = null;
            while((text=reader.readLine())!=null){
                strings.add(text);
            }
            return strings;
        }
        catch(Exception e){
            e.printStackTrace();
        }
        finally{
            try{
                if(reader!=null){
                    reader.close();
                }
            }
            catch(Exception e){
                e.printStackTrace();
            }
        }
        return null;
    }
    public void writeFile(ArrayList<String> list, String path){
        BufferedWriter out=null;
        try{
            FileWriter fstream = new FileWriter(path);
            out = new BufferedWriter(fstream);
            for(String s : list){
                out.write(s);
                out.write("\r\n");
            }
        }
        catch(Exception e){
            e.printStackTrace();
        }
        finally{
            try{
                if(out!=null){
                    out.close();
                }
            }
            catch(Exception e){
                e.printStackTrace();
            }
        }
    }
}
