Solved.ac Class3++
Key, Value 구조로 Comaprator에 따라 정렬해준다.
중복 Key를 허용하지 않는다.
PriorityQueue 2개를 배치해서 시도.
시간초과로 실패
TreeMap 사용
public class Main {
	private static final String D = "D";
	private static final String I = "I";
	private static final String EMPTY = "EMPTY";
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		int T = Integer.parseInt(br.readLine());
		for (int i = 0; i < T; i++) {
			int size = Integer.parseInt(br.readLine());
			TreeMap<Integer, Integer> treeMap = new TreeMap<>();
			for (int j = 0; j < size; j++) {
				String[] data = br.readLine().split(" ");
				int intData = Integer.parseInt(data[1]);
				switch (data[0]) {
					case D:
						int temp;
						if (treeMap.isEmpty()) {
							break;
						}
						if (intData == 1) {
							temp = treeMap.lastKey();
						} else {
							temp = treeMap.firstKey();
						}
						if (treeMap.put(temp, treeMap.get(temp) - 1) == 1) {
							treeMap.remove(temp);
						}
						break;
					case I:
						treeMap.put(intData, treeMap.getOrDefault(intData, 0) + 1);
				}
			}
			if (treeMap.isEmpty()) {
				sb.append(EMPTY).append("\n");
			} else {
				sb.append(treeMap.lastKey()).append(" ").append(treeMap.firstKey()).append("\n");
			}
		}
		System.out.println(sb);
	}
}
TreeMap의 경우 put을 하면 이전 값을 리턴한다.
처음 put이면 null을 아니면 이전값을
성공
fun main() {
    val p = Problem7662ToKotlin()
    val T = readln().toInt()
    val sb = StringBuilder()
    for (i in 0..<T) {
        sb.append(p.solve())
    }
    print(sb)
}
class Problem7662ToKotlin {
    fun solve():String {
        val size = readln().toInt()
        val sortedMap = sortedMapOf<Int, Int>()
        for (i in 0..<size) {
            val data = readln().split(" ")
            val intData = data[1].toInt()
            if (data[0] == "I") {
                sortedMap.put(intData, sortedMap.getOrDefault(intData, 0) + 1)
            } else {
                if (sortedMap.isEmpty()) {
                    continue
                }
                var temp: Int
                if (intData == 1) {
                    temp = sortedMap.lastKey()
                } else {
                    temp = sortedMap.firstKey()
                }
                if (sortedMap.put(temp, sortedMap.get(temp)?.minus(1)) == 1) {
                    sortedMap.remove(temp)
                }
            }
        }
        if (sortedMap.isEmpty()) {
            return "EMPTY\n"
        }
        val sb = StringBuilder()
        sb.append(sortedMap.lastKey()).append(" ").append(sortedMap.firstKey()).append("\n")
        return sb.toString()
    }
}
