Problem:
List of Top 3 Hills

There is a data which provides heights (in meter) of mountains. The data is only for ten mountains.

Write a program which prints heights of the top three mountains in descending order.

Input

Height of mountain 1
Height of mountain 2
Height of mountain 3
.
.
Height of mountain 10

Constraints

0 ≤ height of mountain (integer) ≤ 10,000

Output

Height of the 1st mountain
Height of the 2nd mountain
Height of the 3rd mountain

Sample Input 1

1819
2003
876
2840
1723
1673
3776
2848
1592
922

Output for the Sample Input 1

3776
2848
2840

Sample Input 2

100
200
300
400
500
600
700
800
900
900

Output for the Sample Input 2

900
900
800

Solution in JAVA (judge verdict: Accepted)

import java.io.*;

public class Main {
	public static void main(String[] args) throws Exception {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = 10;
		int array[] = new int[N];
		for (int i = 0; i < 10; i++) {
			String line = br.readLine();
			array[i] = Integer.parseInt(line);
		}
		quickSort(0, N - 1, array);
		for (int j = N - 1; j > 6; j--) {
			System.out.println(array[j]);
		}
	}

	private static void quickSort(int bottom, int top, int[] data) {
		int lower, upper;
		if (bottom >= top)
			return;
		int div = data[bottom];
		for (lower = bottom, upper = top; lower < upper;) {
			while (lower <= upper && data[lower] <= div)
				lower++;
			while (lower <= upper && data[upper] > div)
				upper--;

			if (lower < upper) {
				int temp = data[lower];
				data[lower] = data[upper];
				data[upper] = temp;
			}
		}

		int temp = data[bottom];
		data[bottom] = data[upper];
		data[upper] = temp;

		quickSort(bottom, upper - 1, data);
		quickSort(upper + 1, top, data);

	}
}