#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
int N, M;
vector<int>c, m, e, a, cc, mm, ee, aa, bh;//排序时acme
int sear(int cj, vector<int> f) {
int left, right, mid;
left = 0;
right = f.size() - 1;
while (left <= right) {
mid = left + (right - left) / 2;
if (f[mid] == cj) {
while (mid>=0&&mid<=f.size()-1) {
if (f[mid] == cj)
mid++;
else
break;
}
return f.size() - mid+1;
}
else if (f[mid] < cj)
left = mid + 1;
else if (f[mid] > cj)
right = mid - 1;
}
return -1;
}
void print(int x) {
int i, n;
bool cheak = false;
for(i=0;i<N;i++)
if (bh[i] == x) {
n = i;
cheak = true;
break;
}
if (!cheak)
printf("N/A");
else {
int min=99999;
char str;
if (min > sear(a[n],aa)) {
min = sear(a[n],aa);
str = 'A';
}
if (min > sear(c[n],cc)) {
min = sear(c[n],cc);
str = 'C';
}
if (min > sear(m[n],mm)) {
min = sear(m[n],mm);
str = 'M';
}
if (min > sear(e[n],ee)) {
min = sear(e[n],ee);
str = 'E';
}
printf("%d %c", min, str);
}
return;
}
int main() {
int i,x, y, u, v;
vector<int>s;
scanf("%d %d", &N, &M);
for (i = 1; i <= N; i++) {
scanf("%d %d %d %d", &x, &y, &u, &v);
bh.push_back(x);
c.push_back(y);
m.push_back(u);
e.push_back(v);
a.push_back(y + u + v);
}
for (i = 1; i <= M; i++) {
scanf("%d", &x);
s.push_back(x);
}
cc = c;
mm = m;
ee = e;
aa = a;
sort(cc.begin(), cc.end());
sort(mm.begin(), mm.end());
sort(ee.begin(), ee.end());
sort(aa.begin(), aa.end());
for (i = 0; i < M; i++) {
print(s[i]);
if (i != M - 1)
printf("\n");
}
return 0;
}
1012 The Best Rank
最新推荐文章于 2024-09-09 22:12:12 发布