만드는 중입니다

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

그림

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

요약
각 크기가 다음 크기의 약수인 정사각형 n종류로 h x w 벽을 겹침 없이 빈틈없이 채우는 최소 개수를 구하고, 불가능하면 -1을 출력합니다.
난이도

보통10점 중 7점

유형
그리디, 재귀, 수학
정답자
아직 제출이 없습니다

문제

Bajtazar가 막 새 집으로 이사했다. 선반에 낭송 대회와 바이토샤 시간 내 요들 대회에서 받은 트로피를 진열하고 나니, 벽 한 면이 비어 있었다. 그는 그 벽을 그림으로 채우고 싶어 한다.

벽은 h×wh \times w 미터 크기의 직사각형이다. Bajtazar와 가까운 근처 화상은 nn 종류의 그림을 파는데, 각 종류는 수량에 제한이 없다. 같은 종류의 그림은 모두 크기가 같고, ii번째 종류의 그림은 한 변의 길이가 did_i미터인 정사각형이다. 서로 다른 두 did_i 중 하나는 다른 하나로 나누어떨어진다.

Bajtazar는 가격에는 신경 쓰지 않지만, 벽에 빈 곳이 남지 않기를 원한다. 그림끼리는 겹칠 수 없으나 변을 맞대는 것은 괜찮다. 화상에게 여러 번 오가고 싶지 않으므로 가능한 한 적은 수의 그림을 사려고 한다. 벽 전체를 덮는 데 필요한 그림의 최소 개수를 구하고, 벽을 덮는 것이 불가능하면 그 사실을 알아내라.

입력

첫 줄에는 벽의 가로와 세로를 나타내는 정수 hh와 ww (1≤h,w≤1091 \le h, w \le 10^9)가 주어진다.

둘째 줄에는 그림의 종류 수 nn (1≤n≤301 \le n \le 30)이 주어진다.

셋째 줄에는 각 종류 그림의 크기를 나타내는 서로 다른 정수 d1,d2,…,dnd_1, d_2, \ldots, d_n (1≤di≤1091 \le d_i \le 10^9, di<di+1d_i < d_{i+1}, di+1d_{i+1}은 did_i로 나누어떨어짐)이 주어진다.

출력

벽을 덮을 수 있으면 벽을 덮는 데 필요한 그림의 최소 개수를 한 줄에 출력한다. 덮을 수 없으면 -1을 출력한다.

힌트

첫 번째 예제에서 Bajtazar는 1×1 그림 6개, 3×3 그림 2개, 6×6 그림 1개, 총 9개로 벽을 덮을 수 있다. 배치 예시는 아래 그림과 같다.

두 번째 예제에서는 벽을 정확히 덮는 것이 불가능하다.

예제2

  1. 예제 1

    입력
    6 10
    3
    1 3 6
    
    예상 출력
    9
    
  2. 예제 2

    입력
    3 3
    1
    2
    
    예상 출력
    -1