알고리즘
[BOJ] 랭킹전대기열
winwin-k9
2023. 10. 21. 21:32
import java.util.*;
import java.lang.*;
import java.io.*;
class Main{
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
List<Room> roomList = new ArrayList<>();
String[] str = br.readLine().split(" ");
int p = Integer.parseInt(str[0]);
int m = Integer.parseInt(str[1]);
for(int i = 0; i < p; i++) {
str = br.readLine().split(" ");
int level = Integer.parseInt(str[0]);
String nick = str[1];
boolean flag = true;
for(Room room : roomList) {
if (!room.isFull(m)) {
if (Math.abs(level - room.limit) <= 10) {
Human human = new Human(level, nick);
room.list.add(human);
flag = false;
break;
}
}
}
if (flag) {
Room room = new Room(level);
Human human = new Human(level, nick);
room.list.add(human);
roomList.add(room);
}
}
for(Room room : roomList) {
if (room.isFull(m)) {
System.out.println("Started!");
} else {
System.out.println("Waiting!");
}
Collections.sort(room.list, new Comparator<Human>() {
public int compare(Human h1, Human h2) {
return h1.name.compareTo(h2.name);
}
});
for(Human human : room.list) {
System.out.println(human.level + " " + human.name);
}
}
}
static class Human {
int level;
String name;
public Human(int level, String name) {
this.level = level;
this.name = name;
}
}
static class Room {
int limit;
List<Human> list = new ArrayList<>();
public Room(int limit) {
this.limit = limit;
}
public boolean isFull(int m) {
return list.size() == m;
}
}
}
728x90