Problem:
クラス分け

会津進学塾では、生徒が塾に入る際に実力テストを行ってクラス分けをします。テストは数学、英語、国語の 3 科目行い、生徒を A,B,C クラスにクラス分けします。A クラスのレベルが一番高く、順に低くなっていきます。

クラス分けの判断は以下の表に基づきます。

条件

クラス

100 点の科目がある

A

数学と英語の平均点が 90 点以上

A

3 科目の平均点が 80 点以上

A

3 科目の平均点が 70 点以上

B

3 科目の平均点が 50 点以上で数学か英語が 80 点以上

B

上の条件を満たさない

C

複数の条件を満たす場合は、よりレベルの高いクラスに分けられます。

生徒の人数 n (1 ≤ n ≤ 10000)、各生徒の数学の点数 pmi (0 ≤ pmi ≤ 100)、英語の点数 pei (0 ≤ pei ≤ 100)、国語の点数 pji (0 ≤ pji ≤ 100) を入力とし、各生徒のクラスA,B,C (半角英字) を出力するプログラムを作成してください。

Input

複数のデータセットの並びが入力として与えられます。入力の終わりはゼロひとつの行で示されます。
各データセットは以下の形式で与えられます。

n
pm1 pe1 pj1
pm2 pe2 pj2
:
pmn pen pjn

入力はすべて整数で与えられます。データセットの数は 1000 を超えません。

Output

入力データセットごとに、各生徒のクラスを順番に出力します。

Sample Input

4
100 70 20
98 86 55
80 34 36
65 79 65
2
99 81 20
66 72 90
0

Output for the Sample Input

A
A
B
C
A
B

Solution in JAVA (judge verdict: Accepted)

import java.util.Scanner;


public class Main {

	/**
	 * @param args
	 */
	static Scanner sc = new Scanner(System.in);
	static int n;
	static int []pm, pe, pj;
	public static void main(String[] args) {;
		// TODO 自動生成されたメソッド・スタブ
		while(read()) solve();
		
	}
	private static void solve() {
		// TODO 自動生成されたメソッド・スタブ
		for(int i=0; i<n; i++) {
			if(pm[i]==100 || pe[i]==100 || pj[i]==100) {
				System.out.println("A");
				continue;
			} else if(pm[i]+pe[i]>=180) {
				System.out.println("A");
				continue;
			} else if(pm[i]+pe[i]+pj[i]>=240) {
				System.out.println("A");
				continue;
			} else if(pm[i]+pe[i]+pj[i]>=210) {
				System.out.println("B");
				continue;
			} else if(pm[i]+pe[i]+pj[i]>=150 && (pm[i]>=80 || pe[i]>=80)) {
				System.out.println("B");
				continue;
			} else {
				System.out.println("C");
			}
		}
		
	}
	private static boolean read() {
		// TODO 自動生成されたメソッド・スタブ
		n = sc.nextInt();
		if(n==0) return false;
		pm = new int[n];
		pe = new int[n];
		pj = new int[n];
		for (int i = 0; i < n; i++) {
			pm[i] = sc.nextInt();
			pe[i] = sc.nextInt();
			pj[i] = sc.nextInt();
		}
	
		return true;
	}

	
}