문제 주소: https://www.acmicpc.net/problem/15486
난이도: silver 1
for i in range(N-1, -1, -1): #마지막날부터 시작해서
if schedule[i][0] + i <= N: #(현재날짜의 업무의 소요기간 + 현재날짜)가 퇴사일 이전이면
dp[i] = max(schedule[i][1] + dp[i + schedule[i][0]], dp[i+1])
#(현재날짜 업무의 보수 + 업무를했을때 끝나는 날까지 벌수있는 최대금액), 그 일을 선택하지 않았을때
else: #현재날짜의 업무 소요기간 + 현재날짜가 퇴사일 이후일때
dp[i] = dp[i+1] #업무 선택안함
import sys
input = sys.stdin.readline
N = int(input())
schedule = [list(map(int, input().split())) for _ in range(N)]
dp = [0 for _ in range(N+1)]
for i in range(N-1, -1, -1):
if schedule[i][0] + i <= N:
dp[i] = max(schedule[i][1] + dp[i + schedule[i][0]], dp[i+1])
else:
dp[i] = dp[i+1]
print(dp[0])