import java.util.*;
public class HuaweiTest01 {
static class Server {
int number;
int cpuCount;
int memSize;
int cpuArch;
int supportNp;
}
public static void main(String[] args) {
// please define the JAVA input here. For example: Scanner s = new Scanner(System.in);
// please finish the function body here.
// please define the JAVA output here. For example: System.out.println(s.nextInt());
Scanner s = new Scanner(System.in);
int M = s.nextInt(); // 服务器数量
Server[] servers = new Server[M];
String serverStr = s.nextLine();
for (int i = 0; i < M; i++) {
serverStr = s.nextLine();
String[] attributes = serverStr.split(",");
Server server = new Server();
server.number = i;
server.cpuCount = Integer.parseInt(attributes[1]);
server.memSize = Integer.parseInt(attributes[2]);
server.cpuArch = Integer.parseInt(attributes[3]);
server.supportNp = Integer.parseInt(attributes[4]);
servers[i] = server;
}
String request = s.nextLine();
String[] split = request.split(" ");
int N = Integer.parseInt(split[0]); // 最大分配数量
int strategy = Integer.parseInt(split[1]); // 分配策略, 1: prefer cpuCount, 2: prefer memSize
int requestCpuCount = Integer.parseInt(split[2]);
int requestMemSize = Integer.parseInt(split[3]);
int requestCpuArch = Integer.parseInt(split[4]);
int requestSupportNp = Integer.parseInt(split[5]);
List<Server> answer = new ArrayList<>();
for (int i = 0; i < M; i++) {
if (servers[i].cpuCount < requestCpuCount || servers[i].memSize < requestMemSize) {
continue;
}
if (requestCpuArch != 9 && servers[i].cpuArch != requestCpuArch) {
continue;
}
if (requestSupportNp != 2 && servers[i].supportNp != requestSupportNp) {
continue;
}
answer.add(servers[i]);
}
if (answer.size() <= N) {
System.out.print(answer.size());
for (Server server : answer) {
System.out.print(" " + server.number);
}
} else {
// 根据分配策略排序
if (strategy == 1) {
answer.sort((o1, o2) -> {
if (o1.cpuCount != o2.cpuCount) {
return o1.cpuCount - o2.cpuCount;
} else if (o1.memSize != o2.memSize){
return o1.memSize - o2.memSize;
} else {
return o1.number - o2.number;
}
});
} else {
answer.sort((o1, o2) -> {
if (o1.memSize != o2.memSize) {
return o1.memSize - o2.memSize;
} else if (o1.cpuCount != o2.cpuCount){
return o1.cpuCount - o2.cpuCount;
} else {
return o1.number - o2.number;
}
});
}
System.out.print(N);
for (int i = 0; i < N; i++) {
System.out.print(" " + answer.get(i).number);
}
}
}
}
样例都过,但是提交只过了40%,心态炸裂
#华为笔试##实习##笔试题目#