Problem:
リーグ戦のスコアシート

スポーツの大会にはリーグ戦とトーナメント戦があります。サッカーのリーグ戦では勝・負・引分にそれぞれ点数を付け、その勝ち点で順位を競います。勝ち点はそれぞれ勝(3点)、負(0点)、引分(1点)です。

チーム数とリーグ戦の成績を入力とし、成績の良い順(勝ち点の多い順)に並べ替え、チーム名と勝ち点を出力するプログラムを作成してください。勝ち点が同点の場合は入力順に出力してください。

Input

複数のデータセットが与えられます。各データセットは以下の形式で与えられます。

n
name1 w1 l1 d1
name2 w2 l2 d2
:
namen wn ln dn

１行目にチーム数 n (n ≤ 10) が与えられます。続く n 行にチーム i の名前 namei (20文字以内のアルファベット)、勝の数 wi、負の数 li、引分の数 di (0 ≤ wi, li, di ≤ 9) が空白区切りで与えられます。

チーム数が 0 のとき、入力の終了とします。データセットの数は 50 を超えません。

Output

データセットごとに、並べ替えたチームのリストを出力してください。i 行目に i 番目のチームの名前と勝ち点をカンマで区切って出力してください。

データセットの間に１つの空行を入れてください。

Sample Input

4
Japan 1 0 2
Egypt 1 2 0
Canada 0 2 1
Spain 2 0 1
3
India 0 2 0
Poland 1 0 1
Italy 1 0 1
0

Output for the Sample Input

Spain,7
Japan,5
Egypt,3
Canada,1

Poland,4
Italy,4
India,0

Solution in JAVA (judge verdict: Accepted)

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

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		boolean first = true;
		for(;;){

			int N = cin.nextInt();
			if(N==0){
				break;
			}
			if(first){
				first=false;
			}
			else{
				System.out.println();
			}
			Team t[] = new Team[N];
			for(int i=0;i<N;i++){
				String s = cin.next();
				int a= cin.nextInt();
				int b= cin.nextInt();
				int c= cin.nextInt();
				t[i]=new Team(s,i,a,b,c);
			}
			Arrays.sort(t);
			
			for(int i = N-1;i>=0;i--){
				System.out.println(t[i].name+","+t[i].total);
			}
		}
		
	}

}
class Team implements Comparable{
	String name;
	int num;
	int win;
	int lose;
	int drow;
	int total;
	Team(String s,int a,int b,int c,int d){
		name=s;
		num=a;
		win=b;
		lose=c;
		drow=d;
		total = b*3+drow;
	}
	public int compareTo(Object o){
		Team t = (Team)o;
		if(this.total==t.total){
			return t.num-this.num;
		}
		else{
			return this.total-t.total;
		}
	}
	
}