無限の光を放つのは人間の心であり、無限の闇を生み出すのも人間の心であり、光と闇が絡み合って戦うこの世界は、懐かしくて無力な世界です。
初年度のCS専攻学生の成績を評価するために、3つのコースの成績のみを考慮します。 C
-Cプログラミング言語、 M
-数学(微積分または線形代数)、および E
-英語。それまでの間、私たちは生徒たちに最高のランクを強調することを奨励します。つまり、3つのコースと平均点に関して4つのランクの中で、生徒ごとに最高のランクを印刷します。
例えば、の等級 C
、 M
、 E
および A
- 4人の平均は以下のように与えられます。
StudentID C M E A
310101 98 85 88 90
310102 70 95 88 84
310103 82 87 94 88
310104 91 91 91 91
1人目はCプログラミング言語で最高の成績を出し、2人目は数学、3人目は英語、そして最後の人は平均して、すべての学生にとって最高のランクは1位です。
入力仕様:
各入力ファイルには1つのテストケースが含まれています。各ケースは、NとM(≤2000)の2つの数値を含む行で始まります。NとM(≤2000)は、それぞれ学生の総数と、ランクをチェックする学生の数です。次いで、N行はそれぞれの順にその学生の([0、100]の範囲内の)3つの整数の等級に続く6桁の文字列である学生IDが含まれ、従い C
、 M
そして E
。次に、M行があり、それぞれに学生IDが含まれています。
出力仕様:
Mの生徒それぞれについて、彼/彼女の最高のランクと、対応するランクのシンボルを1行にスペースで区切って印刷します。
ランキング方法の優先順位は次のように命じています A
> C
> M
> E
。したがって、生徒が同じ最高ランクを取得する方法が2つ以上ある場合は、優先度が最も高い方法を出力します。
学生が採点リストにない場合は、単に出力します N/A
。
入力例:
5 6
310101 98 85 88
310102 70 95 88
310103 82 87 94
310104 91 91 91
310105 85 90 90
310101
310102
310103
310104
310105
999999
出力例:
1 C
1 M
1 E
1 A
3 A
N/A
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#include<climits>//INT_MAX
//#include<bits/stdc++.h>
#define PP pair<ll,int>
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3fll
#define dinf 1000000000000.0
#define PI 3.1415926
typedef long long ll;
using namespace std;
int const mod=1e9+7;
const int maxn=2e3+10;
struct node {
int id;
int fs[4];
}a[maxn];
int jc[10000000][4];
int n,m,ct;
char c[4]={'A','C','M','E'};
bool comp(node x,node y)
{
return x.fs[ct]>y.fs[ct];
}
int main()
{
scanf("%d%d", &n, &m);
for(int i=0; i<n; i++)
{
scanf("%d%d%d%d", &a[i].id, &a[i].fs[1], &a[i].fs[2], &a[i].fs[3]);
a[i].fs[0]=a[i].fs[1]+a[i].fs[2]+a[i].fs[3];
for(int j=0; j<4; j++)
jc[a[i].id][j]=n+1;
}
for(ct=0;ct<4;ct++)
{
sort(a, a+n, comp);
jc[a[0].id][ct]=1;
for (int i=1; i<n; i++)
{
if(a[i].fs[ct]==a[i-1].fs[ct])
jc[a[i].id][ct]=jc[a[i-1].id][ct];
else
jc[a[i].id][ct]=i+1;
}
}
while(m--)
{
int x;
scanf("%d", &x);
if (jc[x][0]!=0)
{
int k=0;
for (int i=0; i<4; i++)
{
if (jc[x][i]<jc[x][k])
k = i;
}
printf("%d %c\n", jc[x][k], c[k]);
}
else
printf("N/A\n");
}
return 0;
}