만드는 중입니다

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

아홉 묶음

면접 대비

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

요약
핫도그 팩과 번 팩의 크기 목록이 주어질 때, 고른 핫도그와 번의 개수가 같아지도록 사야 하는 최소 팩 수를 구한다.
난이도

보통10점 중 6점

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

문제

"핫도그는 10개들이 묶음으로 팔리고 빵은 8개들이나 12개들이 묶음으로 팔린다. 그래서 개수를 딱 맞추려면 아홉 묶음을 사야 한다."

1986년 영화 True Stories에 나오는 대사다. 거의 맞는 말이다. 핫도그 10개들이 4묶음과 빵 8개들이 5묶음을 사면 양쪽 다 40개가 되어 개수가 맞는다. 더 적은 묶음으로도 맞출 수 있다. 핫도그 10개들이 2묶음에 빵 8개들이 1묶음과 빵 12개들이 1묶음을 더하면 양쪽 다 20개가 되고, 산 묶음은 4개뿐이다.

살 수 있는 핫도그 묶음과 빵 묶음의 목록이 주어진다. 핫도그와 빵의 개수를 정확히 같게 맞추려면 최소 몇 묶음을 사야 하는지 구하라.

입력

첫째 줄에 살 수 있는 핫도그 묶음의 수 HH가 주어지고, 이어서 각 묶음에 든 핫도그의 개수 h1,…,hHh_1, \dots, h_H가 주어진다. 둘째 줄에 살 수 있는 빵 묶음의 수 BB가 주어지고, 이어서 각 묶음에 든 빵의 개수 b1,…,bBb_1, \dots, b_B가 주어진다.

HH와 BB는 0 이상 100 이하이고, 묶음의 크기는 1 이상 1000 이하이다. 살 수 있는 묶음은 하나씩 모두 나열한다. 예를 들어 빵 8개들이 묶음을 다섯 개 살 수 있다면 빵 묶음 목록에 8이 다섯 번 나온다.

출력

핫도그와 빵을 1개 이상 같은 개수로 살 수 없으면 impossible을 출력한다.

살 수 있으면 핫도그와 빵의 개수가 정확히 같아지도록 사는 데 필요한 최소 묶음 수를 출력한다. 핫도그 묶음과 빵 묶음을 모두 세어서 더한 값이다.

예제3

  1. 예제 1

    입력
    4 10 10 10 10
    10 8 8 8 12 12 12 8 8 12 12
    
    예상 출력
    4
    
  2. 예제 2

    입력
    4 7 7 14 7
    3 11 22 11
    
    예상 출력
    impossible
    
  3. 예제 3

    입력
    1 5
    1 5
    
    예상 출력
    2