A1012

#include <iostream> 
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;

struct Student{
	int id;
	int grade[4];
}student[2010];
char course[4]={'A','C','M','E'};
int Rank[10000000][4]={0};  //存储排名 
int now;

bool cmp(Student a,Student b){  //stu数组按now号递减排序 
	return a.grade[now]>b.grade[now];
}

int main(){
	int m,n,x;
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;i++){
		scanf("%d%d%d%d",&student[i].id,&student[i].grade[1],&student[i].grade[2],&student[i].grade[3]);
		student[i].grade[0]=(student[i].grade[1]+student[i].grade[2]+student[i].grade[3])/3; 
	}
	for(now=0;now<4;now++){
		sort(student,student+n,cmp);
		Rank[student[0].id][now]=1;
		for(int i=1;i<n;i++){
			if(student[i].grade[now]==student[i-1].grade[now])
				Rank[student[i].id][now]=Rank[student[i-1].id][now];
			else
				Rank[student[i].id][now]=i+1;
		}
	} 
	for(int i=0;i<m;i++){
		scanf("%d",&x);
		if(Rank[x][0]==0){
			printf("N/A\n");
		}
		else{
			int k=0;
			for(int i=1;i<=3;i++){
				if(Rank[x][i]<Rank[x][k]){
					k=i;
				}
			}
		printf("%d %c\n",Rank[x][k],course[k]);	
		}
	}
	return 0;
} 

rank不能用作数组名 卡了一下

发布了11 篇原创文章 · 获赞 0 · 访问量 398

猜你喜欢

转载自blog.csdn.net/weixin_42776479/article/details/104107511