아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

비례대표 득표수

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

요약
총 투표 수와 D'Hondt 방식으로 배분된 각 정당 의석이 주어질 때 각 정당이 받았을 수 있는 최소와 최대 득표수를 구합니다.
난이도

보통10점 중 7점

유형
이분 탐색, 수학
정답자
아직 제출이 없습니다

문제

JAG 왕국이 의회 의원을 뽑는 선거를 치렀다. 이 나라는 정당명부식 비례대표제만 쓴다. 유권자는 정당 하나에 투표하고, 각 정당이 얻는 의석수는 득표수에 비례한다. 의회의 총 의석수는 정수이므로 정확히 비례하게 나누기는 대개 불가능하다. JAG 왕국은 동트 방식으로 의석을 나눈다.

정당마다 후보는 무제한이고, 한 정당의 후보에는 순서가 있다. xx표를 얻은 정당의 yy번째 후보에게 값 xy\dfrac{x}{y}를 준다. 모든 후보를 값이 큰 순서로 정렬한 다음 앞에서 TT명이 당선된다. TT는 총 의석수이고, 한 정당의 의석수는 그 정당에서 당선된 후보의 수다.

득표수가 각각 4040, 6060, 3030인 정당 셋을 예로 들자. 총 의석수가 T=9T = 9이면 첫 번째 정당이 33석, 두 번째 정당이 44석, 세 번째 정당이 22석을 얻는다.

값이 같은 후보는 추첨으로 가르므로, 값이 같은 후보는 모두 당선될 가능성이 있다. 같은 예에서 T=5T = 5이면 값이 2020인 후보 둘이 동점이고, 다음 두 결과가 모두 나올 수 있다.

  • 첫 번째 정당이 22석, 두 번째 정당이 22석, 세 번째 정당이 11석을 얻는다.
  • 첫 번째 정당이 11석, 두 번째 정당이 33석, 세 번째 정당이 11석을 얻는다.

당신은 방금 방송으로 선거 결과를 들었다. 총 유효 투표수와 각 정당이 얻은 의석수를 알고 나니 각 정당이 몇 표를 받았는지 궁금해졌다.

총 유효 투표수 NN, 정당 수 MM, ii번째 정당이 얻은 의석수 SiS_i가 주어진다. 각 정당이 받았을 수 있는 최소 득표수와 최대 득표수를 구하라. 입력에 따라서는 주어진 의석수를 만들어 내는 득표 상황이 아예 없기도 하다.

입력

첫째 줄에 총 유효 투표수 NN (1≤N≤1091 \le N \le 10^9)과 정당 수 MM (1≤M≤300001 \le M \le 30000)이 주어진다. 다음 MM개 줄의 ii번째 줄에는 ii번째 정당이 얻은 의석수 SiS_i (0≤Si≤300000 \le S_i \le 30000)가 주어진다. Si≠0S_i \ne 0인 ii가 적어도 하나 있다.

출력

주어진 NN, MM, SiS_i를 만들어 내는 득표 상황이 없으면 impossible을 출력한다. 그렇지 않으면 MM개 줄을 출력한다. ii번째 줄에는 ii번째 정당이 받았을 수 있는 최소 득표수와 최대 득표수를 두 정수로 출력한다.

예제5

  1. 예제 1

    입력
    10 2
    2
    1
    
    예상 출력
    5 7
    3 5
    
  2. 예제 2

    입력
    5 6
    0
    2
    0
    2
    6
    0
    
    예상 출력
    0 0
    1 1
    0 0
    1 1
    3 3
    0 0
    
  3. 예제 3

    입력
    2000 5
    200
    201
    202
    203
    204
    
    예상 출력
    396 397
    397 399
    399 401
    401 403
    403 404
    
  4. 예제 4

    입력
    15 10
    1
    1
    1
    1
    1
    1
    1
    1
    1
    13
    
    예상 출력
    impossible
    
  5. 예제 5

    입력
    1000000000 9
    12507
    16653
    26746
    21516
    29090
    10215
    28375
    21379
    18494
    
    예상 출력
    67611619 67619582
    90024490 90033301
    144586260 144597136
    116313392 116323198
    157257695 157269050
    55221291 55228786
    153392475 153403684
    115572783 115582561
    99976756 99985943