1012. The Best Rank (25)——PAT (Advanced Level) Practise

题目信息:

1012. The Best Rank (25)

时间限制

400 ms

内存限制

32000 kB

代码长度限制

16000 B

判题程序

Standard

作者

CHEN, Yue

To evaluate the performance of our first year CS majored students, we consider their grades of three courses only: C - C Programming Language, M - Mathematics (Calculus or Linear Algebra), and E - English. At the mean time, we encourage students by emphasizing
on their best ranks -- that is, among the four ranks with respect to the three courses and the average grade, we print the best rank for each student.

For example, The grades of C, M, E and A - Average of 4 students are given as the following:

StudentID  C  M  E  A
310101     98 85 88 90
310102     70 95 88 84
310103     82 87 94 88
310104     91 91 91 91

Then the best ranks for all the students are No.1 since the 1st one has done the best in C Programming Language, while the 2nd one in Mathematics, the 3rd one in English, and the last one in average.

Input

Each input file contains one test case. Each case starts with a line containing 2 numbers N and M (<=2000), which are the total number of students, and the number of students who would check their ranks, respectively. Then N lines follow, each contains a student
ID which is a string of 6 digits, followed by the three integer grades (in the range of [0, 100]) of that student in the order of C, M and E. Then there are M lines, each containing a student ID.

Output

For each of the M students, print in one line the best rank for him/her, and the symbol of the corresponding rank, separated by a space.

The priorities of the ranking methods are ordered as A > C > M > E. Hence if there are two or more ways for a student to obtain the same best rank, output the one with the highest priority.

If a student is not on the grading list, simply output "N/A".

Sample Input

5 6
310101 98 85 88
310102 70 95 88
310103 82 87 94
310104 91 91 91
310105 85 90 90
310101
310102
310103
310104
310105
999999

Sample Output

1 C
1 M
1 E
1 A
3 A
N/A

代码如下:

#include <iostream>
#include <string>
#include <map>
#include <set>
using namespace std;
class CJ
{
public:
	int c, m, e, a;
	int cp, mp, ep, ap;
	CJ(){
		cp = mp = ep = ap = 0;
	}
};

int main()
{
	map<string, CJ> mp;
	map<int, string> mpb;
	int n, m;
	while (!cin.eof() && cin >> n >> m)
	{
		for (int i = 0; i < n; ++i)
		{
			string str;
			cin >> str;
			CJ cj;
			cin >> cj.c >> cj.m >> cj.e;
			cj.a = (cj.c + cj.m + cj.e) / 3;
			mp[str] = cj;
		}
		for (int j = 0; j < m; ++j)
		{
			string str;
			cin >> str;
			mpb[j] = str;
		}
		for (map<string, CJ>::iterator ipi = mp.begin();
			ipi != mp.end(); ipi++)
		{
			for (map<string, CJ>::iterator ipj = ipi;
				ipj != mp.end(); ipj++)
			{
				if (ipi == ipj)
					continue;
				if (ipi->second.c < ipj->second.c)
					ipi->second.cp++;
				else if (ipi->second.c > ipj->second.c)
					ipj->second.cp++;
				if (ipi->second.m < ipj->second.m)
					ipi->second.mp++;
				else if (ipi->second.m > ipj->second.m)
					ipj->second.mp++;
				if (ipi->second.e < ipj->second.e)
					ipi->second.ep++;
				else if (ipi->second.e > ipj->second.e)
					ipj->second.ep++;
				if (ipi->second.a < ipj->second.a)
					ipi->second.ap++;
				else if (ipi->second.a > ipj->second.a)
					ipj->second.ap++;
			}
		}
		for (map<int, string>::iterator ip = mpb.begin();
			ip != mpb.end(); ip++)
		{
			if (mp.find(ip->second) != mp.end())
			{
				int arr[4] = { mp[ip->second].ap, mp[ip->second].cp, mp[ip->second].mp, mp[ip->second].ep };
				int max = 0;
				for (int i = 1; i < 4; i++)
				{
					if (arr[i] < arr[max])
						max = i;
				}
				cout << arr[max] + 1 << " ";
				char ch;
				switch (max)
				{
				case 0:
					ch = 'A';
					break;
				case 1:
					ch = 'C';
					break;
				case 2:
					ch = 'M';
					break;
				case 3:
					ch = 'E';
				}
				cout << ch << endl;
			}
			else
				cout << "N/A" << endl;
		}
	}
	return 0;
}
时间: 2024-08-07 08:16:14

1012. The Best Rank (25)——PAT (Advanced Level) Practise的相关文章

1016. Phone Bills (25)——PAT (Advanced Level) Practise

题目信息: 1016. Phone Bills (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A long-distance telephone company charges its customers by the following rules: Making a long-distance call costs a certain amount per minute, depending

1007. Maximum Subsequence Sum (25)——PAT (Advanced Level) Practise

题目信息: 1007. Maximum Subsequence Sum (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to be { Ni, Ni+1, ..., Nj } where 1 <= i <= j <=

1006. Sign In and Sign Out (25)——PAT (Advanced Level) Practise

题目信息: 1006. Sign In and Sign Out (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue At the beginning of every day, the first person who signs in the computer room will unlock the door, and the last one who signs out will lock th

1009. Product of Polynomials (25)——PAT (Advanced Level) Practise

题目信息: 1009. Product of Polynomials (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue This time, you are supposed to find A*B where A and B are two polynomials. Input Specification: Each input file contains one test case. Each c

1010. Radix (25)——PAT (Advanced Level) Practise

题目信息: 1010. Radix (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is "yes", if 6 is a decimal number and 110 is a b

1002. A+B for Polynomials (25)——PAT (Advanced Level) Practise

题目信息: 1002. A+B for Polynomials (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue This time, you are supposed to find A+B where A and B are two polynomials. Input Each input file contains one test case. Each case occupies 2 lin

1003. Emergency (25)——PAT (Advanced Level) Practise

题目信息: 1003. Emergency (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scattered cities connected by some roads.

1013. Battle Over Cities (25)——PAT (Advanced Level) Practise

题目信息: 1013. Battle Over Cities (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward th

1093. Count PAT&#39;s (25)【计数】——PAT (Advanced Level) Practise

题目信息 1093. Count PAT's (25) 时间限制120 ms 内存限制65536 kB 代码长度限制16000 B The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the 4th, and the 6th characters, and the second one is formed by the 3rd, the 4th, and the 6th c