만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

시험 공부 계획

면접 대비

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

요약
시험마다 시작 시각, 공부 후 종료 시각, 공부하지 않은 종료 시각, 필요한 공부 시간이 주어질 때 시험 시작 전 빈 시간에 공부해서 통과할 수 있는 시험의 최대 개수를 구합니다.
난이도

보통10점 중 6점

유형
동적 계획법, 그리디
정답자
아직 제출이 없습니다

문제

오늘 볼 시험이 아주 많은데 아직 어느 시험도 준비하지 못했다. 경험상 시험 공부를 충분히 하면 제한 시간보다 훨씬 일찍 합격한다는 것을 알고 있다. 또한 각 시험을 제한 시간 안에 합격하려면 공부를 얼마나 해야 하는지도 정확히 알고 있다. 공부 시간이 그보다 부족하면 확실히 떨어진다.

대학교 규정상 시험은 모두 응시해야 한다. 합격이 확실하다고 알고 있는 경우에만 시험 도중에 나갈 수 있다.

공부는 시각 00부터 시작할 수 있지만, 시험을 보고 있지 않은 동안에만 공부할 수 있다. 한 시험의 공부를 연속된 시간에 할 필요는 없으며, 중간에 멈췄다가 다시 이어서 할 수 있다.

각 시험의 시작 시각, 소요 시간, 필요한 공부 시간, 공부한 뒤 끝나는 시각을 포함한 전체 시험 일정이 주어질 때, 최대 몇 개의 시험에 합격할 수 있는지 구하시오.

입력

입력은 다음과 같이 주어진다.

  • 첫째 줄에 응시해야 하는 시험의 개수 nn (1≤n≤20001 \leq n \leq 2000)이 주어진다.

  • 둘째 줄부터 nn개의 줄에 걸쳐 ii번째 줄에는 시험을 나타내는 정수 네 개가 주어진다.

    • sis_i (0≤si0 \leq s_i): ii번째 시험의 시작 시각
    • pip_i (si<pis_i < p_i): 공부한 뒤에 응시하면 ii번째 시험이 끝나는 시각
    • eie_i (pi≤ei≤109p_i \leq e_i \leq 10^9): 공부하지 않고 응시하면 ii번째 시험이 끝나는 시각
    • aia_i (1≤ai≤1091 \leq a_i \leq 10^9): ii번째 시험을 준비하는 데 필요한 시간

시험은 시작 시각의 오름차순으로 주어지며 서로 겹치지 않는다. 즉 1≤i<n1 \leq i < n인 모든 ii에 대해 ei≤si+1e_i \leq s_{i+1}이 성립한다.

출력

합격할 수 있는 시험의 최대 개수를 출력한다.

예제2

  1. 예제 1

    입력
    3
    10 20 30 5
    30 50 100 15
    100 101 200 50
    
    예상 출력
    3
    
  2. 예제 2

    입력
    3
    1000 1001 1002 1000
    1003 1004 1005 500
    1006 1007 1008 500
    
    예상 출력
    2