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)、各生徒の数学の点数
pm
i
(0 ≤
pm
i
≤ 100)、英語の点数
pe
i
(0 ≤
pe
i
≤ 100)、国語の点数
pj
i
(0 ≤
pj
i
≤ 100) を入力とし、各生徒のクラスA,B,C (半角英字) を出力するプログラムを作成してください。
Input
複数のデータセットの並びが入力として与えられます。入力の終わりはゼロひとつの行で示されます。
各データセットは以下の形式で与えられます。
n
pm
1
pe
1
pj
1
pm
2
pe
2
pj
2
:
pm
n
pe
n
pj
n
入力はすべて整数で与えられます。データセットの数は 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

Submitted solutions:

code_snippet: #include<cstdio>
#include<cstring>
#include<algorithm>
#include<functional>
#include<vector>
#include<stack>
#include<queue>
#include<iostream>
using namespace std;
int main(void)
{
	int a,b,c;
	int i,j;
	int n;
	while(1) {
		cin >> n;
		if(n==0)break;
		for(i=0;i<n;i++) {
			cin >>a>>b>>c;
			if(a==100 || b==100 || c==100) cout<<"A"<<endl;
			else if((a+b)/2>=90) cout<<"A"<<endl;
			else if((a+b+c)/3>=80) cout<<"A"<<endl;
			else if((a+b+c)/3>=70) cout<<"B"<<endl;
			else if((a+b+c)/3>=50 && a>=80 || b>=80) cout<<"B"<<endl;
			else cout<<"C"<<endl;
		}
	}
	exit(0);
}
accuracy: 1
time_ms: 10
memory_kb: 1156
final_rank: 2

code_snippet: #include<iostream>
using namespace std;

int main(void){

	while(1){
		int n,pm,pe,pj,pme,pmej,k[10000];
		cin >> n;
		if(n==0)break;
		for(int i=0;i<n;i++){
			cin >> pm >> pe >> pj;
			pme=(pm+pe)/2;
			pmej=(pm+pe+pj)/3;
			if(pm==100||pe==100||pj==100||pme>=90||pmej>=80)k[i]=1;
			else if(pmej>=70||pmej>=50&&(pm>=80||pe>=80))k[i]=2;
			else k[i]=3;
		}
		for(int i=0;i<n;i++){
			if(k[i]==1)cout << "A" << endl;
			else if(k[i]==2)cout << "B" << endl;
			else cout << "C" << endl;
		}
	}
	return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 1156
final_rank: 2

code_snippet: #include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <functional>
#include <numeric>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <utility>
#include <sstream>
#include <complex>

using namespace std;

#define FOR(i,a,b) for(long long i=(a);i<(b);i++)
#define REP(i,N) for(long long i=0;i<(N);i++)
#define ALL(s) (s).begin(),(s).end()
#define fi first
#define se second

#define PI acos(-1.0)
#define INF 1000000007
#define EPS 1e-10

typedef long long ll;
typedef pair<ll, ll> P;
typedef pair<double, double> PD;
typedef pair<string, ll> PS;
typedef vector<ll> V;

int n;
double a, b, c;
char ans;

int main(){
	while (cin >> n&&n){
		REP(i, n){
			cin >> a >> b >> c;
			if (a == 100 || b == 100 || c == 100 ||
				(a + b) / 2 >= 90 || (a + b + c) / 3 >= 80){
				ans = 'A';
			}
			else if ((a + b + c) / 3 >= 70 
				|| ((a >= 80 || b >= 80) && (a + b + c) / 3 >= 50)){
				ans = 'B';
			}
			else ans = 'C';
			cout << ans << endl;
		}
	}
}
accuracy: 1
time_ms: 10
memory_kb: 1220
final_rank: 7

code_snippet: #include<iostream>
#include<string>
using namespace std;
int main(){
	int n,m,e,j;
	char z;
	while(true){
	cin>>n;
	if(n==0)
		break;
	for(int i=0;i<n;i++){
		cin>>m>>e>>j;
		z='C';
		if(m+e+j>=210)
			z='B';
		if(m+e+j>=150&&(m>=80||e>=80))
			z='B';
		if(m==100||e==100||j==100)
			z='A';
		if(m+e>=180)
			z='A';
		if(m+e+j>=240)
			z='A';
		cout<<z<<endl;
	}
	}
    return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 1152
final_rank: 1

code_snippet: #include <bits/stdc++.h>

using namespace std;

int main()
{
	int n;
	while(cin >> n && n)
	{
		while(n--)
		{
			int a,b,c;
			cin >> a >> b >> c;
			int ava=(a+b+c)/3;

			if( a==100 || b==100 || c==100 || (a+b)/2>=90 || ava>=80 )cout<<"A"<<endl;
			else if(ava>=70 || ( ava>=50 && (a>=80||b>=80)))cout<<"B"<<endl;	
			else cout << "C" << endl;
		}
	}	
}
accuracy: 1
time_ms: 10
memory_kb: 1156
final_rank: 2

code_snippet: #include <iostream>

using namespace std;

int main() {
  int n, pm, pe, pj;
  while (true) {
    cin >> n;
    if (n == 0) {
      return 0;
    }
    for (int i = 0; i < n; ++i) {
      cin >> pm >> pe >> pj;
      if ((pm == 100 or pe == 100 or pj == 100) or (pm + pe >= 180)
          or (pm + pe + pj >= 240)) {
        cout << "A" << endl;
      } else if ((pm + pe + pj >= 210)
          or (pm + pe + pj >= 150 and (pm >= 80 or pe >= 80))) {
        cout << "B" << endl;
      } else {
        cout << "C" << endl;
      }
    }
  }
}
accuracy: 1
time_ms: 10
memory_kb: 1156
final_rank: 2

code_snippet: #include <cstdio>
#include <stdio.h>
#include <iostream>
#include <iomanip>
#include <string> 
#include <vector> 
using namespace std;

int main(){
	int n;
	while(cin >> n){
	if(n == 0){break;}
	int t[100],tt[200],i,ii;
	string ans[1000];
	i = 1;
	for(i = 1;n >= i;i++){
			//cout << i << endl;
			cin >> t[1] >> t[2] >> t[3];
			tt[1] = ( t[1] + t[2] ) / 2;
			tt[2] = ( t[1] + t[2] + t[3]) / 3;
			if(t[1] == 100 or t[2] == 100 or t[3] == 100 or  tt[1] >= 90 or tt[2] >= 80){
				ans[i] = "A";
			}else if(tt[2] >= 70){
				ans[i] = "B";
			}else if(tt[2] >= 50 and t[1] >= 80 or tt[2] >= 50 and t[2] >= 80){
				ans[i] = "B";
			}else{
				ans[i] = "C";
			}
	}
	ii = 1;
	//cout << "OK" << endl;
	for(ii = 1;n >= ii;ii++){
		cout << ans[ii] << endl;
	}
}
}
accuracy: 1
time_ms: 10
memory_kb: 1192
final_rank: 6