package dancinggooglers;

import java.io.File;
import java.util.Scanner;

public class DanceScoreCalculator {


    public static void main(String[] args) {
        if(args.length <= 0 || args[0] == null) {
            System.out.println("You must enter a file to read");
            System.out.println("Usage: blah <filename>");
            System.exit(0);
        }

        File argFile = new File(args[0]);
        try {
            Scanner googleSpeakScanner = new Scanner(argFile);
            String firstLine = googleSpeakScanner.nextLine();
            Integer linesToScan = new Integer(firstLine);
            for(int i = 1; i <= linesToScan; i++) {
                String googleDancerLine = googleSpeakScanner.nextLine();
                DanceScoreCase danceCase = new DanceScoreCase(googleDancerLine);
                System.out.println(String.format("Case #%d: %d", i, danceCase.maxDancersThatCouldPass()));
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

package de.hg.codejam.tasks.dance.domain;

public class Case {
	private final byte[] totalPoints;
	private final int numberOfSurprisingTriplets;
	private final int numberOfGooglers;
	private final short bestResult;

	public Case(short bestResult, int numberOfSurprisingTriplets,
			byte[] totalPoints) {
		this.totalPoints = totalPoints;
		this.numberOfSurprisingTriplets = numberOfSurprisingTriplets;
		this.bestResult = bestResult;

		numberOfGooglers = totalPoints.length;
	}

	public byte[] getTotalPoints() {
		return totalPoints;
	}

	public int getNumberOfSurprisingTriplets() {
		return numberOfSurprisingTriplets;
	}

	public int getNumberOfGooglers() {
		return numberOfGooglers;
	}

	public short getBestResult() {
		return bestResult;
	}

	public static Case parse(String inputString) {
		String[] splitted = inputString.split(" ");

		int numberOfGooglers = Integer.parseInt(splitted[0]);
		int numberOfSurprisingTriplets = Integer.parseInt(splitted[1]);
		short bestResult = Short.parseShort(splitted[2]);

		byte[] totalPoints = new byte[numberOfGooglers];
		for (int i = 0; i < numberOfGooglers; i++)
			totalPoints[i] = Byte.parseByte(splitted[i + 3]);

		return new Case(bestResult, numberOfSurprisingTriplets, totalPoints);
	}

	@Override
	public String toString() {
		String s = "CASE[Number of Googlers: " + numberOfGooglers
				+ ", Number of surprising Scores: "
				+ numberOfSurprisingTriplets + ", Best result at least: "
				+ bestResult + ", Scores: ";

		for (int i = 0; i < totalPoints.length; i++)
			s += totalPoints[i] + (i < (numberOfGooglers - 1) ? " " : "");

		s += "]";

		return s;
	}
}
