/******************************************************************* Reference solution for Spring 2013 COS 126 Programming Exam 1 Foodlympics Part Two: Gourmet Glory Author: COS 126 Staff Netid: cos126 Precepts: lots of them Dependencies: StdIn, StdOut Usage: java FoodPart2 N Description: Reads in names and scores for C countries. Prints out the N top-score countries in order. **************************************************************************/ public class FoodPart2 { // find the highest value in scores. set this value to 0, and // return the corresponding element of countries. public static String best(String[] countries, int[] scores) { // number of countries int C = countries.length; // bestIndex is the index of the (earliest) max-score country int bestIndex = -1; // max is the maximum score seen so far int max = Integer.MIN_VALUE; // find index of max-score country for (int i = 0; i < C; i++) { if (scores[i] > max) { max = scores[i]; bestIndex = i; } } // do required update and return the winner scores[bestIndex] = 0; return countries[bestIndex]; } // read in a file of scores, and take N from the command-line. // then print out the top N ranking countries from best to worst. public static void main(String[] args) { int C = StdIn.readInt(); // number of countries int N = Integer.parseInt(args[0]); // how many to rank String[] countries = new String[C]; int[] scores = new int[C]; // read the rest of the input for (int i = 0; i < C; i++) { countries[i] = StdIn.readString(); scores[i] = StdIn.readInt(); } // now print the results for (int i = 0; i < N; i++) { String nextRanked = best(countries, scores); StdOut.println("Rank " + (i+1) + ": " + nextRanked); } } }