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 com.renoux.gael.codejam.cj2012.qb;

import com.renoux.gael.codejam.fwk.Solver;
import com.renoux.gael.codejam.utils.ArrayUtils;
import com.renoux.gael.codejam.utils.Input;
import com.renoux.gael.codejam.utils.Output;

public class QB extends Solver {

	public static void main(String... args) throws Exception {
		new QB().run();
	}

	@Override
	protected void solveCase(Input in, Output out) {
		System.out.println();
		int[] line = ArrayUtils.parseInts(in.readLine().split(" "));
		int ctGooglers = line[0];
		int ctSurprises = line[1];
		int target = line[2];

		int ctStars = 0;

		for (int i = 3; i < line.length; i++) {
			int totalScore = line[i];

			int lowestScoreNoSurprise = Math.max(target - 1, 0);
			int lowestScoreWithSurprise = Math.max(target - 2, 0);

			int lowestTotalNoSurprise = target + 2 * lowestScoreNoSurprise;
			int lowestTotalWithSurprise = target + 2 * lowestScoreWithSurprise;

			if (lowestTotalNoSurprise <= totalScore) {
				ctStars++;
				System.out.println("Guy " + (i - 2) + " did great");
			} else if (lowestTotalWithSurprise <= totalScore && ctSurprises > 0) {
				ctStars++;
				ctSurprises--;
				System.out.println("Guy " + (i - 2) + " did ok");
			}
		}

		out.writeLine(ctStars);
	}

	@Override
	protected String getProblemName() {
		return "QB";
	}

	@Override
	protected boolean disableSmall() {
		return true;
	}

	@Override
	protected boolean disableLarge() {
		return true;
	}
}
