实现:先求每个学生的A(即C、M、E的平均数)。
输入要求学生的ID,比较在四项排名(A、C、M、E)中排名最高的一项,输出排名并输出该项目;若输入ID不存在,输出N/A。
注:优先级:A>C>M>E。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct node
{
int ID,C,M,E,A;
}st[2005];
int f[1000000];
int n,m;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d%d%d%d",&st[i].ID,&st[i].C,&st[i].M,&st[i].E);
st[i].A=(st[i].C+st[i].M+st[i].E)/3;
f[st[i].ID]=i;
}
while(m--)
{
int ID;
scanf("%d",&ID);
int j=f[ID];
if(f[ID])
{
int sum=0,num=n+1;
char s;
for(int i=1;i<=n;i++)
if(st[j].A<st[i].A)
sum++;
if(sum<num)
{
num=sum;
s='A';
}
sum=0;
for(int i=1;i<=n;i++)
if(st[j].C<st[i].C)
sum++;
if(sum<num)
{
num=sum;
s='C';
}
sum=0;
for(int i=1;i<=n;i++)
if(st[j].M<st[i].M)
sum++;
if(sum<num)
{
num=sum;
s='M';
}
sum=0;
for(int i=1;i<=n;i++)
if(st[j].E<st[i].E)
sum++;
if(sum<num)
{
num=sum;
s='E';
}
printf("%d %c\n",num+1,s);
}
else printf("N/A\n");
}
return 0;
}