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);
	}

}

package codejam;

import codejam.fileHandler;

public class DancingWithTheGooglers {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		fileHandler file = new fileHandler("DancingWiththeGooglersLarge.in",
				"DancingWiththeGooglersLargeout.in");
		int noOfCases = file.readCase();
		for (int i = 1; i <= noOfCases; i++) {
			int numberArray[] = file.readIntegers();
			int N = numberArray[0];
			int s = numberArray[1];
			int p = numberArray[2];
			int upperLimit = 3 * p - 2;
			int lowerLimit = 3 * p - 4;
			if(p==0){
				upperLimit = lowerLimit = 0;
			}
			if(p == 1){
				upperLimit = lowerLimit = 1;
			}
			int count = 0;
			for (int j = 3; j < numberArray.length; j++) {
				if (s == 0) {
					if (numberArray[j] >= upperLimit) {
						count++;
					}
				}
				else{
					if(numberArray[j] >= lowerLimit){
						if(numberArray[j] == lowerLimit){
							s--;
						}
						else if(numberArray[j] == (lowerLimit + 1)){
							s--;
						}
						count++;
					}
				}
			}
			String print = "Case #" + i + ": " + count + "\n";
			file.writeToOutput(print);
		}
		System.out.println("Done");
	}

}
