부분합

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

요약
최대 20개의 봉지 크기와 목표 n이 주어질 때, 각 봉지를 최대 한 번씩 골라 합이 n 이상이면서 최소가 되는 총량을 구한다.
난이도

쉬움10점 중 3점

유형
완전 탐색, 비트 연산, 배열
정답자
아직 제출이 없습니다

문제

마이아는 정확히 nn 마이크로리터의 우유를 사고 싶습니다. 하지만 동네 가게에는 그 크기의 봉지가 없어서, 여러 봉지를 사서 합쳐야 합니다. 정확히 nn 마이크로리터를 맞추는 것이 불가능할 수도 있는데, 그럴 때 마이아는 조금 더 사는 것은 괜찮지만 남는 양을 최대한 줄이고 싶어 합니다.

가게는 mm 가지 크기의 봉지를 팝니다. 마이아는 같은 크기의 봉지를 두 개 사는 것을 싫어해서, 각 봉지는 최대 한 번만 고를 수 있습니다. 파는 봉지 중 일부를 골라 마이아가 적어도 nn 마이크로리터를 사되, 사게 되는 총량을 가능한 한 작게 만드세요.

입력

첫 번째 줄에 두 정수 nn과 mm이 주어집니다 (0≤n≤10000000000 \le n \le 1000000000, 0<m≤200 < m \le 20). 각각 마이아가 원하는 우유의 마이크로리터 수와 가게가 파는 봉지 크기의 개수입니다.

이어지는 mm개의 줄에는 각각 정수 aa가 하나씩 주어집니다 (0≤a≤10000000000 \le a \le 1000000000). 가게가 파는 봉지 하나의 크기(마이크로리터)입니다.

출력

각 봉지를 최대 한 번만 사용하여 마이아가 적어도 nn 마이크로리터를 갖게 되는 데 필요한 최소 총 마이크로리터 수를 정수 하나로 출력하세요. 적어도 nn 마이크로리터를 만들 수 없다면 대신 IMPOSSIBLE을 출력하세요.

예제3

  1. 예제 1

    입력
    5859870 3
    3141592
    2718281
    1000000
    
    예상 출력
    5859873
    
  2. 예제 2

    입력
    15 3
    10
    5
    3
    
    예상 출력
    15
    
  3. 예제 3

    입력
    100 2
    10
    20
    
    예상 출력
    IMPOSSIBLE