https://www.acmicpc.net/problem/13904
1️⃣ 과제 점수가 높은 과제부터 고려를 시작
2️⃣ 최대한 늦게 늦게 끝낼 수 있는 과제를 최대한 늦은 날짜에 끝내도록 한다. (날짜마다 수행한 과제는 scores배열에 저장)
if __name__ == '__main__':
N = int(input())
assign_list = []
ans = 0
scores = [0] * 1000
for _ in range(N):
d, w = map(int, input().split())
assign_list.append([d,w])
assign_list = sorted(assign_list, key = lambda x: (-x[1], x[0]))
for info in assign_list:
temp_d, temp_w = info
temp_d -= 1
for i in range(temp_d, -1,-1):
# 과제 수행 할 날짜가 있는 경우
if scores[i] == 0:
scores[i] += temp_w
ans += temp_w
break
print(ans)