만드는 중입니다

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

레벨 업

시간 제한2초메모리 제한256 MB

요약
각 퀘스트의 첫 레벨과 둘째 레벨 경험치 및 소요 시간이 주어질 때, 두 레벨을 모두 넘기는 최소 총 시간을 구합니다. 불가능하면 -1을 출력합니다.
난이도

보통10점 중 6점

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

레벨 업

MMORPG의 팬인 Steve는 World of Warcraft Classic이 발표되었을 때 매우 기뻐했다. 그는 첫날부터 게임을 시작했고, 지금은 최고 레벨까지 두 레벨만 남았다. 게임이 처음 나왔을 때만큼 시간이 많지 않아서, 이 두 레벨을 최대한 빨리 끝내고 싶어 한다.

첫 번째 레벨을 통과하려면 Steve는 s1s_1만큼의 경험치가 필요하다. 그 경험치를 얻어야만 두 번째 레벨로 올라갈 수 있고, 두 번째 레벨을 통과하려면 s2s_2만큼의 경험치를 더 얻어야 한다.

Steve에게는 nn개의 퀘스트 목록이 있다. 이 퀘스트들로 두 레벨을 모두 끝낼 수 있다는 것을 그는 안다. ii번째 퀘스트를 통과하는 데 tit_i분이 걸린다. 그 대가로 이 퀘스트에서 xix_i의 경험치를 얻는다.

다음 레벨로 올려 주는 퀘스트를 완료하면, 넘친 경험치만큼 다음 레벨에 필요한 경험치가 줄어든다. 레벨이 오른 뒤 남은 퀘스트들은 yiy_i의 경험치를 주지만, 필요한 시간도 rir_i로 줄어든다.

퀘스트를 완료하면 다른 레벨에서도 그 퀘스트를 다시 수행할 수 없다.

퀘스트 목록이 주어졌을 때, Steve가 마지막 두 레벨을 가장 빨리 끝내도록 퀘스트를 수행하는 순서를 정하라.

입력

첫 줄에 세 정수 nn, s1s_1, s2s_2 (1≤n,s1,s2≤5001 \le n, s_1, s_2 \le 500)가 주어진다. 각각 퀘스트의 개수, 첫 번째 레벨에 필요한 경험치, 두 번째 레벨에 필요한 경험치이다.

이어지는 nn개의 줄에는 네 정수 xix_i, tit_i, yiy_i, rir_i (1≤yi<xi≤5001 \le y_i < x_i \le 500, 1≤ri<ti≤1091 \le r_i < t_i \le 10^9)가 주어진다. xix_i와 yiy_i는 ii번째 퀘스트를 첫 번째 레벨과 두 번째 레벨에서 수행했을 때 얻는 경험치이고, tit_i와 rir_i는 같은 순서로 그 퀘스트를 통과하는 데 필요한 분이다.

출력

Steve가 두 레벨을 모두 끝내는 데 필요한 최소 시간(분)을 한 개의 수로 출력한다. 두 레벨을 모두 끝낼 방법이 없으면 −1-1을 출력한다.

예제3

  1. 예제 1

    입력
    2 100 100
    100 100 10 10
    101 11 100 10
    
    예상 출력
    110
    
  2. 예제 2

    입력
    4 20 20
    40 1000 20 20
    6 6 5 5
    10 10 1 1
    10 10 1 1
    
    예상 출력
    40
    
  3. 예제 3

    입력
    2 20 5
    10 10 5 5
    10 10 5 5
    
    예상 출력
    -1