만드는 중입니다

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

훈련, 2라운드

시간 제한6초메모리 제한2048 MB

요약
각 문제의 구현 실력 범위와 사고 실력 범위가 주어질 때, 문제를 순서대로 풀면서 한 문제를 풀 때마다 두 실력 중 하나를 1 올린다고 하면 최대 몇 문제를 풀 수 있는지 구합니다.
난이도

보통10점 중 6점

유형
동적 계획법, 구간, 비트 연산
정답자
아직 제출이 없습니다

문제

아슐리는 브랜든 온라인 저지에서 다른 프로그래밍 대회를 준비하고 있다. 이 저지에는 코치 톰이 아슐리가 풀 문제 목록을 불러올 수 있는 기능이 그대로 남아 있다.

톰은 문제를 몇 개 골라 두었다. 각 문제에는 구현 난이도 범위와 사고 난이도 범위가 있다. 아슐리는 구현 실력 ii와 사고 실력 tt로 훈련을 시작한다. 톰이 불러온 순서대로 문제를 보며, 각 문제를 풀거나 건너뛴다. 한 번 건너뛴 문제에는 다시 돌아갈 수 없다.

아슐리는 현재 구현 실력과 사고 실력이 모두 해당 문제의 범위 안(양 끝 포함)에 있을 때만 문제를 풀 수 있다. 문제를 풀고 나면 반성하면서 구현 실력이나 사고 실력 중 하나를 1 올린다. 두 실력을 동시에 올릴 수는 없고, 반성을 건너뛸 수도 없다.

아슐리가 반성을 최적으로 계획할 때 풀 수 있는 문제 수의 최댓값을 구하시오.

입력

첫째 줄에 세 정수 nn, ii, tt가 주어진다(1≤n≤50001 \le n \le 5000, 0≤i,t≤1090 \le i, t \le 10^9). nn은 문제 수, ii는 아슐리의 초기 구현 실력, tt는 초기 사고 실력이다.

이어지는 nn개의 줄에는 각각 네 정수 ilowi_{low}, ihighi_{high}, tlowt_{low}, thight_{high}가 주어진다(0≤ilow≤ihigh≤2⋅1090 \le i_{low} \le i_{high} \le 2 \cdot 10^9, 0≤tlow≤thigh≤2⋅1090 \le t_{low} \le t_{high} \le 2 \cdot 10^9). 각 줄은 문제 하나를 나타낸다. 구현 난이도 범위는 [ilow,ihigh][i_{low}, i_{high}], 사고 난이도 범위는 [tlow,thigh][t_{low}, t_{high}]이며, 양 끝을 포함한다.

출력

아슐리가 반성을 최적으로 선택했을 때 풀 수 있는 문제 수의 최댓값을 한 정수로 출력한다.

예제1

  1. 예제 1

    입력
    3 0 0
    0 1 0 1
    1 1 0 1
    1 1 1 1
    
    예상 출력
    3