바나나 상자 구매
면접 대비시간 제한2초메모리 제한256 MB
그루의 잔액을 시간순으로 추적하며 배송 시각에 살 수 있으면 사고, 아니면 수령 시각에 비싼 값으로 결제를 시도해 산 상자 수를 센다.
문제
미니언들은 바나나를 아주 좋아하기 때문에 그루는 항상 바나나를 사들여야 한다. 미니언이 아주 많으므로 그루는 자신이 사게 될 바나나의 개수를 알고 싶어 한다.
그루는 집으로 배달되는 인터넷 상점에서 바나나를 산다. 이 방식에는 특별한 점이 하나 있다. 바나나 상자를 발송 시점에 결제하면 가격이 C1이고, 수령 시점에 결제하면 C2이다. 그루는 모든 바나나 판매 인터넷 상점의 서버를 해킹해서 가까운 시일의 판매 정보를 알아냈다. 이제 그는 바나나 상자마다 언제 발송될 수 있고 언제 자신에게 도착하는지 안다. 또한 언제 얼마의 돈이 계좌에 들어오는지 적힌 은행 거래 내역도 가지고 있다.
그루는 매우 성급해서, 발송 시점에 바나나 상자를 살 수 있으면(계좌에 돈이 있고 그 돈이 구매에 충분하면) 그 상자를 산다. 그렇지 않으면 택배 기사를 부르고, 배달 시점에 그루가 돈을 낼 수 있으면 소포를 사들이고, 낼 수 없으면 택배 기사는 빈손으로 돌아간다.
미니언들 외에도 세 명의 소녀를 키우는 그루에게는 계산할 시간이 없다. 그는 가지고 있는 데이터로 그루가 최종적으로 사게 될 바나나 상자의 개수를 계산하는 프로그램을 작성해 달라고 부탁한다.
입력
첫째 줄에는 두 정수 C1과 C2가 주어진다(1 ≤ C1 ≤ C2 ≤ 1000). 이는 바나나 상자의 발송 시점 가격과 수령 시점 가격이다. 둘째 줄에는 하나의 정수 n이 주어진다(1 ≤ n ≤ 100 000). 이는 그루의 계좌에 들어오는 입금의 개수이다. 다음 n개 줄에는 두 수 ai, ti가 주어진다(1 ≤ ai ≤ 1000, 1 ≤ ti ≤ 109). 이는 들어오는 돈의 양과 그 돈이 들어오는 시각이다. 다음 줄에는 수 m이 주어진다(1 ≤ m ≤ 100 000). 이는 가까운 시일 안에 판매될 바나나 상자의 개수이다. 다음 m개 줄에는 두 수 li, ri가 주어진다(1 ≤ li ≤ ri ≤ 109). 이는 각 바나나 상자의 발송 시각과 수령 시각이다.
임의의 i ≠ j에 대해 li ≠ lj, li ≠ rj, ri ≠ rj가 성립한다.
출력
출력 파일의 유일한 줄에 그루가 살 수 있는 바나나 상자의 개수를 출력한다.