아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

소들의 롤러코스터

면접 대비

시간 제한1초메모리 제한128 MB

요약
구간 [0, L]을 빈틈이나 겹침 없이 덮도록 부품을 골라, 총 비용이 예산 B 이하이면서 총 재미를 최대로 만든다.
난이도

보통10점 중 6점

유형
동적 계획법, 정렬, 구간, 배열
정답자
아직 제출이 없습니다

문제

소들이 롤러코스터를 만들고 있습니다. 소들은 예산을 넘기지 않으면서 가능한 한 재미있는 롤러코스터를 만들고 싶어 합니다.

트랙은 길이가 LL인 하나의 직선 구간입니다. 서로 바꿔 쓸 수 있는 부품이 NN개 있습니다. 부품 ii의 길이는 WiW_i로 고정되어 있고, 지형 때문에 시작 위치 XiX_i에서만 설치할 수 있어 구간 [Xi,Xi+Wi][X_i, X_i + W_i]를 덮습니다. 소들은 롤러코스터가 위치 00에서 시작해 위치 LL에서 끝나도록 부품들을 이어 붙이며, 마지막 부품을 제외한 각 부품의 끝은 바로 다음 부품의 시작과 정확히 맞닿아야 합니다. 즉, 선택한 부품들은 겹치거나 빈틈이 생기지 않도록 구간 [0,L][0, L] 전체를 빈틈없이 덮어야 합니다.

각 부품 ii에는 재미 점수 FiF_i와 비용 CiC_i가 있습니다. 롤러코스터의 총 재미는 사용한 부품들의 재미 점수의 합이고, 총 비용은 그 부품들의 비용의 합입니다. 전체 예산은 BB입니다. 구간 [0,L][0, L] 전체를 덮으면서 총 비용이 BB 이하인 롤러코스터의 최대 총 재미를 구하세요.

제약 조건

  • 1≤L≤10001 \le L \le 1000
  • 1≤N≤100001 \le N \le 10000
  • 1≤Wi≤L1 \le W_i \le L
  • 0≤Xi≤L−Wi0 \le X_i \le L - W_i
  • 1≤Fi≤10000001 \le F_i \le 1000000
  • 1≤Ci≤10001 \le C_i \le 1000
  • 1≤B≤10001 \le B \le 1000

입력

  • 첫째 줄: 공백으로 구분된 세 정수 LL, NN, BB.
  • 2…N+12 \dots N+1번째 줄: i+1i+1번째 줄에는 공백으로 구분된 네 정수 XiX_i, WiW_i, FiF_i, CiC_i가 주어집니다.

출력

  • 정수 하나: 예산을 넘기지 않으면서 트랙 [0,L][0, L] 전체를 덮는 롤러코스터의 최대 총 재미를 출력합니다. 그런 롤러코스터를 만들 수 없으면 −1-1을 출력합니다.

힌트

첫 번째 테스트 케이스에서 가장 재미있는 구성 중 하나는 입력의 3번째, 5번째, 6번째 줄에 주어진 부품을 고르는 것입니다. 이 부품들은 구간 [0,5][0, 5]를 덮는 이어진 롤러코스터가 되며 총 재미는 1717, 총 비용은 77로 예산 1010 이내입니다. 처음 두 부품을 고르면 재미는 더 커지지만(2525) 비용의 합이 1212가 되어 예산을 초과합니다.

예제3

  1. 예제 1

    입력
    5 6 10
    0 2 20 6
    2 3 5 6
    0 1 2 1
    1 1 1 3
    1 2 5 4
    3 2 10 2
    
    예상 출력
    17
    
  2. 예제 2

    입력
    3 1 5
    0 3 50 2
    
    예상 출력
    50
    
  3. 예제 3

    입력
    5 1 3
    0 5 100 5
    
    예상 출력
    -1