만드는 중입니다

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

EDF

면접 대비

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

요약
기존 작업 N개와 나중에 도착하는 작업 M개를 마감이 가장 가까운 작업부터 처리할 때, 모든 작업을 끝낼 수 있는지 판단하고 끝나는 시각을 구합니다.
난이도

보통10점 중 5점

유형
그리디, 힙, 시뮬레이션
정답자
아직 제출이 없습니다

문제

민구는 이번 년도에 일이 너무 많아서 NN개의 작업이 쌓여 있으며, 시간이 흐르면서 최대 MM개의 작업이 추가된다.

기존 작업은 필요한 시간 tit_i와 마감 시각 did_i가 주어지고, 추가되는 작업은 추가되는 시각 wjw_j, 필요한 시간 tjt_j, 마감 시각 djd_j가 주어진다.

민구는 마감 시각이 가장 가까운 작업부터 시작한다. 작업 도중 새로 추가된 작업의 마감 시각이 현재 하던 작업보다 이르면, 새 작업으로 바꾼다. 중단된 작업은 나중에 이어서 할 수 있도록 필요한 시간에서 작업한 시간만큼 뺀다.

예를 들어, 필요한 시간이 20분인 작업을 15분 동안 하다가 다른 작업으로 바꾸었다면, 기존 작업은 추후 5분만 더 하면 완료된다.

마감 시각이 같은 작업은 남은 필요 시간이 더 적은 작업을 먼저 한다.

위 과정으로 N+MN + M개의 작업을 민구가 모두 완료할 수 있는지 알아본다. 민구는 한 가지 일에 집중하는 성격이라 한 번에 하나의 작업밖에 하지 못한다. 민구는 N+MN + M개의 작업을 모두 완료할 때까지 작업한다.

현재 시각은 00초이다.

입력

첫 번째 줄에 작업의 개수 NN이 주어진다. (1≤N≤1051 \le N \le 10^5)

다음 NN개의 줄에 각 작업의 필요한 시간 tit_i와 마감 시각 did_i가 주어진다. (0≤ti≤1090 \le t_i \le 10^9, 1≤di≤1091 \le d_i \le 10^9, ti≤dit_i \le d_i)

N+2N + 2번째 줄에 작업 도중 추가될 작업의 개수 MM이 주어진다. (1≤M≤N1 \le M \le N)

다음 MM개의 줄에 각 추가 작업의 추가되는 시각 wjw_j, 필요한 시간 tjt_j, 마감 시각 djd_j가 주어진다. (0≤tj≤1090 \le t_j \le 10^9, 1≤wj,dj≤1091 \le w_j, d_j \le 10^9, wj+tj≤djw_j + t_j \le d_j)

출력

첫 번째 줄에 민구가 작업을 모두 완료하지 못하면 NO를, 모두 완료할 수 있으면 YES를 출력한다.

모두 완료할 수 있다면, 두 번째 줄에 모든 작업을 완료하는 최소 시각을 출력한다.

예제2

  1. 예제 1

    입력
    3
    10 30
    5 25
    10 35
    2
    5 10 45
    20 5 30
    
    예상 출력
    YES
    40
    
  2. 예제 2

    입력
    3
    10 30
    5 25
    15 35
    2
    5 10 40
    20 5 30
    
    예상 출력
    NO