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

public class Diving {
	public static void main(String[] args) throws FileNotFoundException {
		printIntro();
		
		File diveFile = new File("DiveData.txt");
		Scanner fileScanner = new Scanner(diveFile);
		
		processDives(fileScanner);
		
		fileScanner.close();
	}
	
	// Print the introductory message
	public static void printIntro () {
		System.out.println("Welcome to the Diver Scoring program. This program will calculate an");
		System.out.println("  overall score for a diver, based on individual dives.");
		System.out.println();
	}

	// Read each line from input file and output scores and average
	public static void processDives (Scanner fileScanner) {
		int diveCount = 0;
		double sumOfScores = 0.0;
		while (fileScanner.hasNext()) {
			int diveNumber = fileScanner.nextInt();
			String restOfLine = fileScanner.nextLine();
			double diveScore = calculateDiveScore(restOfLine);
			System.out.printf("The diver's score for dive %d is %.2f.\n", diveNumber, diveScore);
			sumOfScores += diveScore;
			++diveCount;
		}
		System.out.println();
		System.out.printf("The average score for these dives is %.2f\n", sumOfScores / diveCount);
	}

	// Calculate the score for one dive
	//   Do *not* print any results in this method
	public static double calculateDiveScore (String diveLine) {
		Scanner lineScanner = new Scanner(diveLine);
		double difficulty = lineScanner.nextDouble();
		
		double min = 10.0; // use highest to represent min
		double max = 0.0;  // use lowest to represent max
		double sum = 0.0;  // use addition identity value for sum
		
		// process 7 scores
		for (int num = 1; num <= 7; ++num) {
			double score = lineScanner.nextDouble();
			min = Math.min(min, score);
			max = Math.max(max, score);
			sum += score;
		}
		lineScanner.close();
		
		sum -= min + max;
		return sum * difficulty * 0.6;
	}
}
