Problem:
コンテスト

問題

先日，オンラインでのプログラミングコンテストが行われた． W大学とK大学のコンピュータクラブは以前からライバル関係にあり，このコンテストを利用して両者の優劣を決めようということになった．

今回，この2つの大学からはともに10人ずつがこのコンテストに参加した．長い議論の末，参加した10人のうち，得点の高い方から3人の得点を合計し，大学の得点とすることにした．

W大学およびK大学の参加者の得点のデータが与えられる．このとき，おのおのの大学の得点を計算するプログラムを作成せよ．

入力

入力は20行からなる． 1行目から10行目にはW大学の各参加者の得点を表す整数が， 11行目から20行目にはK大学の各参加者の得点を表す整数が書かれている．これらの整数はどれも0以上100以下である．

出力

W大学の得点とK大学の得点を，この順に空白区切りで出力せよ．

入出力例

入力例１

23
23
20
15
15
14
13
9
7
6
25
19
17
17
16
13
12
11
9
5

出力例１

66 61

入力例２

17
25
23
25
79
29
1
61
59
100
44
74
94
57
13
54
82
0
42
45

出力例２

240 250

上記問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。

Solution in JAVA (judge verdict: Accepted)

import java.util.Scanner;
import java.util.Arrays;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int[] a = new int[10];
		int[] b = new int[10];
		for(int i=0;i<10;++i) {
			a[i]=sc.nextInt();
		}
		for(int i=0;i<10;++i) {
			b[i]=sc.nextInt();
		}
		Arrays.sort(a);
		Arrays.sort(b);
//		int i=1,end=10;     // 初期位置と終了位置を調べる
//		while(i<end){                 // 終了位置未満の間
//			if(a[i-1]>a[i]){  // 昇順(>)、降順(<） 
//				swap(a, i);  // swap
//				i--;                  // ソートした場合は左で1つずれる
//				if(i==0) i+=2;        // 地点0になった場合は位置を2加算
//			} else {                  // ソートの必要が無い場合は右へ1つずれる
//				i++;
//			}
//		}
//		i=1;
//		while(i<end){                 // 終了位置未満の間
//			if(b[i-1]>b[i]){  // 昇順(>)、降順(<） 
//				swap(b, i);  // swap
//				i--;                  // ソートした場合は左で1つずれる
//				if(i==0) i+=2;        // 地点0になった場合は位置を2加算
//			} else {                  // ソートの必要が無い場合は右へ1つずれる
//				i++;
//			}
//		}
		System.out.println(Integer.toString(a[7]+a[8]+a[9])+' '+Integer.toString(b[7]+b[8]+b[9]));
	}

	public final static void swap(int[] array, int i) {
		int n=array[i-1]; array[i-1]=array[i]; array[i]=n;
	}
	
	public final static void swap2(int[] array, int i, int j) {
		int n=array[j]; array[j]=array[i]; array[i]=n;
	}
	
	public final static void swap_heap(int[] array, int i){
		int n=array[i]; array[i]=array[0]; array[0]=n;
	}
	
}