1012 The Best Rank (25分)

#include<iostream>
#include<map>
#include<algorithm> 
using namespace std;
struct Student{
	string id;
	int C[2];
	int M[2];
	int E[2];
	int A[2];
}stu[3000];
bool cmp1(Student a,Student b){
	return a.C[0]>b.C[0];
}
bool cmp2(Student a,Student b){
	return a.M[0]>b.M[0];
}
bool cmp3(Student a,Student b){
	return a.E[0]>b.E[0];
}
bool cmp4(Student a,Student b){
	return a.A[0]>b.A[0];
}
int main(){
	int m,n;
	map<string, Student> mp;
	cin>>m>>n;
	for(int i=0;i<m;i++){
		cin>>stu[i].id>>stu[i].C[0]>>stu[i].M[0]>>stu[i].E[0];
		stu[i].A[0]=(stu[i].C[0]+stu[i].M[0]+stu[i].E[0])/3;
	}
	sort(stu,stu+m,cmp1);
	for(int i=0;i<m;i++){
		if(i==0){
			stu[i].C[1]=i+1;
		}else{
			if(stu[i-1].C[0]==stu[i].C[0])
				stu[i].C[1]=stu[i-1].C[1];
			else
				stu[i].C[1]=i+1;
		}
	}
	sort(stu,stu+m,cmp2);
	for(int i=0;i<m;i++){
		if(i==0){
			stu[i].M[1]=i+1;
		}else{
			if(stu[i-1].M[0]==stu[i].M[0])
				stu[i].M[1]=stu[i-1].M[1];
			else
				stu[i].M[1]=i+1;
		}
	}
	sort(stu,stu+m,cmp3);
	for(int i=0;i<m;i++){
		if(i==0){
			stu[i].E[1]=i+1;
		}else{
			if(stu[i-1].E[0]==stu[i].E[0])
				stu[i].E[1]=stu[i-1].E[1];
			else
				stu[i].E[1]=i+1;
		}
	}
	sort(stu,stu+m,cmp4);
	for(int i=0;i<m;i++){
		if(i==0){
			stu[i].A[1]=i+1;
		}else{
			if(stu[i-1].A[0]==stu[i].A[0])
				stu[i].A[1]=stu[i-1].A[1];
			else
				stu[i].A[1]=i+1;
		}
	}
	for(int i=0;i<m;i++){
		mp[stu[i].id]=stu[i];
	}
	string temp;
	string list[n];
	for(int i=0;i<n;i++){
		cin>>temp;
		list[i]=temp;
	}
	for(int i=0;i<n;i++){
		if(mp.count(list[i])==0){
			cout<<"N/A"<<endl;
		}else{
			int min=m;
			string out;
			if(mp[list[i]].A[1]<min){
				min = mp[list[i]].A[1];
				out="A";
			}
			if(mp[list[i]].C[1]<min){
				min = mp[list[i]].C[1];
				out="C";
			}
			if(mp[list[i]].M[1]<min){
				min = mp[list[i]].M[1];
				out="M";
			}
			if(mp[list[i]].E[1]<min){
				min = mp[list[i]].E[1];
				out="E";
			}
			cout<<min<<" "<<out<<endl;
		}
	}
}
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页