1012. The Best Rank (25)

#include <iostream>
#include <algorithm>

using namespace std;

struct node
{
	int id, score[5];
}stu[2010];

int flag[1000000], bestrankindex[1000000], cmpindex;

int cmp(node n1, node n2)
{
	return n1.score[cmpindex] > n2.score[cmpindex];
}

int main()
{
	int n, m;
	scanf("%d%d", &n, &m);

	int i, j, sum;
	for(i = 1; i <= n; i++)
	{
		scanf("%d", &stu[i].id);

		sum = 0;
		for(j = 2; j <= 4; j++)
		{
			scanf("%d", &stu[i].score[j]);
			sum += stu[i].score[j];
		}

		stu[i].score[1] = sum / 3;
		flag[stu[i].id] = n + 1;
	}

	int same, rank, id;
	for(i = 1; i <= 4; i++)
	{
		cmpindex = i;
		sort(stu + 1, stu + n + 1, cmp);

		same = rank = 1;
		for(j = 1; j <= n; j++)
		{
			if(j == 1)
			{
			}
			else if(stu[j].score[i] == stu[j - 1].score[i])
			{
				same++;
			}
			else
			{
				rank += same;
				same = 1;
			}

			id = stu[j].id;
			if(rank < flag[id])
			{
				flag[id] = rank;
				bestrankindex[id] = i;
			}
		}
	}

	char course[5] = {' ', 'A', 'C', 'M', 'E'};
	for(i = 1; i <= m; i++)
	{
		scanf("%d", &id);

		rank = flag[id];
		if(rank == 0)
		{
			printf("N/A\n");
		}
		else
		{
			printf("%d %c\n", rank, course[bestrankindex[id]]);
		}
	}

	system("pause");
	return 0;
}

 

posted on 2025-11-23 16:54  王景迁  阅读(0)  评论(0)    收藏  举报

导航