만드는 중입니다

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

Farmer John, 실제로 농사를 짓다

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

요약
각 식물의 키 h_i + a_i*D보다 큰 식물이 정확히 t_i개가 되도록 하는 최소 일수 D를 구합니다. 불가능하면 -1을 출력합니다.
난이도

어려움10점 중 8점

유형
이분 탐색, 정렬, 그리디
정답자
아직 제출이 없습니다

문제

Farmer John은 농장에서 아스파라거스 식물 NN개(1≤N≤2⋅1051 \leq N \leq 2\cdot 10^5)를 기르고 있다. 유전적 차이가 있는 식물도 있어서, 식물마다 자라는 속도가 다르다. ii번째 식물의 초기 높이는 hih_i인치이고, 하루가 지날 때마다 aia_i인치씩 자란다.

FJ는 일부 식물을 다른 식물보다 더 좋아해서, 특정 식물이 다른 식물보다 키가 크기를 원한다. FJ는 서로 다른 값으로 이루어진 배열 t1,…,tNt_1,\dots,t_N을 준다. 이 배열에는 0부터 N−1N-1까지의 모든 정수가 들어 있다. ii번째 식물보다 키가 큰 다른 식물이 정확히 tit_i개가 되어야 한다. 이 요구를 만족하는 데 필요한 최소 일수를 구하라. 요구를 만족할 수 없다면 그렇게 판단하라.

입력

첫 줄에 테스트 케이스의 개수 TT(1≤T≤101 \leq T \leq 10)가 주어진다.

각 테스트 케이스의 첫 줄에는 정수 NN이 주어진다.

둘째 줄에는 NN개의 정수 hih_i(1≤hi≤1091 \leq h_i \leq 10^9)가 주어진다. hih_i는 ii번째 식물의 초기 높이(인치)이다.

셋째 줄에는 NN개의 정수 aia_i(1≤ai≤1091 \leq a_i \leq 10^9)가 주어진다. aia_i는 ii번째 식물이 하루마다 자라는 길이(인치)이다.

넷째 줄에는 서로 다른 NN개의 정수 tit_i가 주어진다.

모든 테스트 케이스의 NN의 합은 2⋅1052\cdot 10^5을 넘지 않는다.

출력

TT개의 줄에 각 테스트 케이스의 답을 한 줄에 하나씩 출력한다. 요구를 만족할 수 없으면 −1-1을 출력한다.

값이 매우 커질 수 있으므로 C/C++의 long long 같은 64비트 정수 자료형을 사용해야 한다.

예제2

  1. 예제 1

    입력
    6
    1
    10
    1
    0
    2
    7 3
    8 10
    1 0
    2
    3 6
    10 8
    0 1
    2
    7 3
    8 9
    1 0
    2
    7 7
    8 8
    0 1
    2
    7 3
    8 8
    1 0
    
    예상 출력
    0
    3
    2
    5
    -1
    -1
    
  2. 예제 2

    입력
    2
    5
    7 4 1 10 12
    3 4 5 2 1
    2 1 0 3 4
    5
    4 10 12 7 1
    3 1 1 4 5
    2 4 3 1 0
    
    예상 출력
    4
    7