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

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

핼러윈 사탕 나누기

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

요약
이웃들의 연속 구간 중 사탕 합이 c로 나누어떨어지는 것을 찾되, 오른쪽 끝이 가장 작고 그다음 왼쪽 끝이 가장 작은 구간을 출력합니다.
난이도

보통10점 중 6점

유형
누적 합, 해시맵, 수학
정답자
아직 제출이 없습니다

문제

핼러윈마다 아이들은 똑같은 고민에 빠진다. 이웃들은 그날 몇 명의 아이가 찾아오든 상관없이 정해진 개수의 사탕만 나눠 주기 때문에, 너무 늦게 도착한 아이는 사탕을 하나도 받지 못할 수 있다. 그래서 아이들은 다툼을 피하려고 모은 사탕을 전부 한데 모아 똑같이 나누기로 했다. 모든 아이가 같은 개수의 사탕을 받아야 하고, 나누어떨어지지 않아 남는 사탕이 있으면 안 된다.

아이가 cc명 있고, 거리를 따라 nn명의 이웃이 살고 있으며, 아이들이 지나가는 순서대로 11번부터 nn번까지 번호가 매겨져 있다. ii번 이웃은 사탕을 모두 aia_i개 나눠 준다. 아이들은 번호가 연속한 이웃들의 한 구간, 즉 어떤 1≤l≤r≤n1 \le l \le r \le n에 대해 l,l+1,…,rl, l+1, \ldots, r번 이웃만 방문한다. 이때 모은 사탕의 합 al+al+1+⋯+ara_l + a_{l+1} + \cdots + a_r이 cc로 나누어떨어져 모두에게 똑같이 나눠 줄 수 있어야 한다. 모든 이웃이 사탕을 적어도 하나는 주므로 그 합은 cc의 양의 배수가 되고, 따라서 각 아이는 최소 한 개의 사탕을 받는다.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다.

각 테스트 케이스의 첫째 줄에는 두 정수 cc와 nn이 주어진다 (1≤c≤n≤1000001 \le c \le n \le 100000). 각각 아이의 수와 이웃의 수이다. 둘째 줄에는 공백으로 구분된 nn개의 정수 a1,a2,…,ana_1, a_2, \ldots, a_n이 주어지며 (1≤ai≤1000001 \le a_i \le 100000), aia_i는 ii번 이웃이 나눠 주는 사탕의 총 개수이다.

마지막 테스트 케이스 다음에는 두 개의 00이 적힌 줄이 오며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 아이들이 방문해야 하는 이웃들을 한 줄에 출력한다.

합 al+al+1+⋯+ara_l + a_{l+1} + \cdots + a_r이 cc로 나누어떨어지는 연속 구간 l,l+1,…,rl, l+1, \ldots, r (1≤l≤r≤n1 \le l \le r \le n)을 모두 생각하자. 그런 구간 중에서 오른쪽 끝 rr이 가장 작은 것을 고르고, rr이 같은 것이 여러 개이면 그중 왼쪽 끝 ll이 가장 작은 것을 고른다. 그 구간의 번호 l,l+1,…,rl, l+1, \ldots, r을 증가하는 순서로 공백 하나로 구분하여 출력한다.

그런 구간이 없으면 대신 no sweets를 출력한다.

예제6

  1. 예제 1

    입력
    4 5
    1 2 3 7 5
    3 6
    7 11 2 5 13 17
    0 0
    
    예상 출력
    2 3 4
    1 2
    
  2. 예제 2

    입력
    3 3
    3 5 7
    0 0
    
    예상 출력
    1
    
  3. 예제 3

    입력
    1 1
    100000
    0 0
    
    예상 출력
    1
    
  4. 예제 4

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

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

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