给你很多学生的CME三科成绩,然后还要算A(平均分),然后输出每个人的单科最高排名以及科目名字,排名相等时按ACME顺序排
用个结构体储存学生的ID和分数,然后用VIS数组记录科目,HR数组记录最高排名。
#include <cstdio>
#include <vector>
#include <string>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define INF 0x3fffffff
using namespace std;
int hr[1000005],vis[1000005];
struct student
{
int id;
int grade[4];
};
int main()
{
int id;
char bc[6]=" EMCA";
student stu[2005];
memset(vis,0,sizeof(vis));
memset(hr,0,sizeof(hr));
memset(stu,0,sizeof(stu));
int n,m;
cin>>n>>m;
for (int i=1;i<=n;i++)
{
cin>>stu[i].id>>stu[i].grade[2]>>stu[i].grade[1]>>stu[i].grade[0];
stu[i].grade[3]=stu[i].grade[1]+stu[i].grade[2]+stu[i].grade[0];
hr[stu[i].id]=INF;
}
for (int i=1;i<=n;i++)
{
int toprank=INF;
for (int k=0;k<=3;k++)
{
int rak=1;
for (int j=1;j<=n;j++)
{
if (stu[j].grade[k]>stu[i].grade[k])
rak++;
}
if (rak<=toprank)
{
toprank=rak;
vis[stu[i].id]=k+1;
hr[stu[i].id]=toprank;
}
}
}
while(m--)
{
cin>>id;
if (vis[id])
cout<<hr[id]<<' '<<bc[vis[id]]<<endl;
else
cout<<"N/A"<<endl;
}
}