https://www.acmicpc.net/problem/3758
T = int(input())
for i in range(T):
# 팀의 수, 문제의 수, 내 팀 아이, 로엔트리
n, k, t, m = map(int, input().split())
dic = {}
for idx in range(m):
# 팀의 아이디. 문제번호, 점수
i, j, s = map(int, input().split())
if i not in dic:
# 딕셔너리 저장
# 0번째는 점수 배열
# 1번째는 문제를 제출한 수
# 2번째는 마지막으로 제출한 번호
# 3번째는 팀 아이디
dic[i] = []
dic[i].append([0 for _ in range(k+1)])
dic[i][0][j] = s
dic[i].append(1)
dic[i].append(idx)
dic[i].append(i)
else:
dic[i][0][j] = max(s, dic[i][0][j])
dic[i][1] += 1
dic[i][2] = idx
arr = list(dic.values())
for team in range(len(arr)):
# 각 팀의 점수 합산
arr[team][0] = sum(arr[team][0])
# 정렬
arr.sort(key=lambda x: (-x[0], x[1], x[2]))
for team in range(len(arr)):
if arr[team][3] == t:
print(team + 1)
break
주어진 조건을 조금만 생각하면 충분히 풀 수 있는 문제였다.