//
//1012. The Best Rank (25)
//acc
//注意名次相同的情况。。。
#include <iostream>
#include <string.h>
#include <algorithm>
using namespace std;
typedef struct
{
char id[7];
int c;
int m;
int e;
float a;
}Student;
bool cmp( Student s1, Student s2)
{
return s1.a > s2.a;
}
bool cmp1( Student s1, Student s2)
{
return s1.c > s2.c;
}
bool cmp2( Student s1, Student s2)
{
return s1.m > s2.m;
}
bool cmp3( Student s1, Student s2)
{
return s1.e > s2.e;
}
int main()
{
int N,M;
cin >> N >> M;
int i;
Student stu[2001];
Student s;
char name[7];
for (i = 0;i<N;i++)
{
scanf("%s %d %d %d", &stu[i].id ,&stu[i].c,&stu[i].m ,&stu[i].e );
//cin >> stu[i].id >> stu[i].c >> stu[i].m >> stu[i].e;
stu[i].a = (stu[i].c + stu[i].m + stu[i].e)/3.0 ;
}
if(N == 0)
{
for(i=0;i<M;i++)
printf("N/A\n");
//continue;
return 0;
}
int j;
int level = 1;
int index = 0;
int prelevel;
for (i = 0;i<M;i++)
{
cin >> name;
level = 1;
sort(stu, stu + N, cmp);
for (j = 0; j < N; j++)
{
if (strcmp(name, stu[j].id) == 0)
{
while(j>= 1 && stu[j].a == stu[j-1].a)
{
j--;
level--;
}
break;
}
level++;
}
index = 1;
prelevel = level;
if (prelevel == 1)
{
//cout << "1 A"<<endl;
printf("1 A\n");
continue;
}
if (j == N)
{
//cout << "N/A"<< endl;
printf("N/A\n");
continue;
}
level = 1;
sort(stu, stu+N, cmp1);
for (j = 0; j < N; j++)
{
if (strcmp(name, stu[j].id) == 0)
{
while(j>= 1 && stu[j].c == stu[j-1].c)
{
j--;
level--;
}
break;
}
level++;
}
if (level < prelevel)
{
prelevel = level;
index = 2;
}
if (prelevel == 1)
{
//cout << "1 C"<<endl;
printf("1 C\n");
continue;
}
level = 1;
sort(stu, stu+N, cmp2);
for (j = 0; j < N; j++)
{
if (strcmp(name, stu[j].id) == 0)
{
while(j>=1 && stu[j].m == stu[j-1].m)
{
j--;
level--;
}
break;
}
level++;
}
if (level < prelevel)
{
prelevel = level;
index = 3;
}
if (prelevel == 1)
{
//cout << "1 M"<<endl;
printf("1 M\n");
continue;
}
level = 1;
sort(stu, stu+N, cmp3);
for (j = 0; j < N; j++)
{
if (strcmp(name, stu[j].id) == 0)
{
while(j>= 1 && stu[j].e == stu[j-1].e )
{
j--;
level--;
}
break;
}
level++;
}
if (level < prelevel)
{
prelevel = level;
index = 4;
}
cout << prelevel << " " ;
if (index == 1)
{
//cout << "A" << endl;
printf("A\n");
}
else if (index == 2)
{
printf("C\n");
//cout << "C" << endl;
}
else if( index == 3)
{
printf("M\n");
//cout << "M" << endl;
}
else if( index == 4)
{
printf("E\n");
//cout << "E" << endl;
}
}
return 0;
}
PAT 1012. The Best Rank (25)
最新推荐文章于 2018-02-25 14:29:08 发布