/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package codejam.common;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Lance Chen
 */
public class CodeHelper {

    private static String FILE_ROOT = "D:/workspace/googlecodejam/meta";

    public static List<List<String>> loadInputsExcludes(String fileName) {
        List<List<String>> result = new ArrayList<List<String>>();
        List<String> lines = FileUtil.readLines(FILE_ROOT + fileName);
        int index = 0;
        for (String line : lines) {
            if (index == 0) {
                index++;
                continue;
            }
            if (index % 2 == 1) {
                index++;
                continue;
            }
            List<String> dataList = new ArrayList<String>();
            String[] dataArray = line.split("\\s+");
            for (String data : dataArray) {
                if (data.trim().length() > 0) {
                    dataList.add(data);
                }
            }
            result.add(dataList);
            index++;
        }
        return result;
    }

    public static List<List<String>> loadInputs(String fileName) {
        List<List<String>> result = new ArrayList<List<String>>();
        List<String> lines = FileUtil.readLines(FILE_ROOT + fileName);
        for (String line : lines) {
            List<String> dataList = new ArrayList<String>();
            String[] dataArray = line.split("\\s+");
            for (String data : dataArray) {
                if (data.trim().length() > 0) {
                    dataList.add(data);
                }
            }
            result.add(dataList);
        }
        return result;
    }

    public static List<String> loadInputLines(String fileName) {
        return FileUtil.readLines(FILE_ROOT + fileName);
    }

    public static void writeOutputs(String fileName, List<String> lines) {
        FileUtil.writeLines(FILE_ROOT + fileName, lines);
    }
}

package hk.polyu.cslhu.codejam.solution.impl.qualificationround;

import java.util.ArrayList;
import java.util.List;

import hk.polyu.cslhu.codejam.solution.Solution;

public class DancingWithTheGooglers extends Solution {
	private int N, S, p;
	private List<Integer> totalPointList;

	@Override
	public void setProblem(List<String> problemDesc) {
		// TODO Auto-generated method stub
		String[] splitArray = problemDesc.get(0).split(" ");
		
		this.N = Integer.valueOf(splitArray[0]);
		this.S = Integer.valueOf(splitArray[1]);
		this.p = Integer.valueOf(splitArray[2]);
		
		this.totalPointList = new ArrayList<Integer>();
		for (int i = 3; i < splitArray.length; i++) {
			this.totalPointList.add(Integer.valueOf(splitArray[i]));
		}
		
		if (this.totalPointList.size() != this.N)
			logger.error("Found an error for " + problemDesc.get(0));
	}

	@Override
	public void solve() {
		// TODO Auto-generated method stub
		int minNotSupSum = this.p * 3 - 2;
		int minSupSum = this.p > 1 ? (this.p * 3 - 4) : 1;
		
		int totalNotSup = 0;
		int totalSup = 0;
		
		for (Integer point : this.totalPointList) {
			if (point >= minNotSupSum)
				totalNotSup++;
			else if (point >= minSupSum)
				totalSup++;
		}
		
		if (totalSup + totalNotSup < this.S)
			logger.error("Found an error for suprising cases");
		
		this.result = String.valueOf(totalNotSup + Math.min(totalSup, this.S));
	}

}
