java实现比较容易超时,因此使用了StringBuilder,需要多运行几次
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
public class pta_1012 {
static ArrayList<Integer> AList = new ArrayList<>();
static ArrayList<Integer> CList = new ArrayList<>();
static ArrayList<Integer> MList = new ArrayList<>();
static ArrayList<Integer> EList = new ArrayList<>();
static StringBuilder res = new StringBuilder();
static class student{
private int A ;
private int M ;
private int E ;
private int C ;
public student(int C, int M, int E, int A) {
this.A = A;
this.M = M;
this.C = C;
this.E = E;
}
public void showBestRank() {
int n = AList.size();
int bestRank = n - AList.lastIndexOf(A);
String Grade = "A";
int cRank = n - CList.lastIndexOf(C);
int mRank = n - MList.lastIndexOf(M);
int eRank = n - EList.lastIndexOf(E);
if(cRank < bestRank) {
bestRank = cRank;
Grade = "C";
}
if(mRank < bestRank) {
bestRank = mRank;
Grade = "M";
}
if(eRank < bestRank) {
bestRank = eRank;
Grade = "E";
}
res.append(bestRank).append(" ").append(Grade).append("\n");
}
}
static int str2num(String str) {
return Integer.parseInt(str);
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String[] in = bf.readLine().split(" ");
int n = str2num(in[0]);
int m = str2num(in[1]);
HashMap<Integer, student> map = new HashMap<>();
for(int i = 0; i< n; i++) {
in = bf.readLine().split(" ");
int cGrade = str2num(in[1]);
int mGrade = str2num(in[2]);
int eGrade = str2num(in[3]);
int aGrade = (cGrade+mGrade+eGrade)/3;
AList.add(aGrade);
CList.add(cGrade);
MList.add(mGrade);
EList.add(eGrade);
map.put(str2num(in[0]),new student(cGrade,mGrade,eGrade,aGrade));
}
Collections.sort(AList);
Collections.sort(CList);
Collections.sort(MList);
Collections.sort(EList);
for(int i = 0; i < m; i++) {
int input = str2num(bf.readLine());
if(map.containsKey(input)) {
map.get(input).showBestRank();
}else {
res.append("N/A\n");
}
}
System.out.println(res.toString().substring(0,res.length() - 1));
}
}