파일 업로드

수업 중 잠자기

profile
실행 시간 제한메모리 제한
2 초1024 MB
📃 해결할 문제

민지는 최근 오프라인 수업으로 돌아왔는데, 불행히도 선생님의 강의는 매우 지루해서 자주 졸곤 합니다.

선생님은 민지가 수업에서 주의를 기울이지 않는 것을 알아챘습니다. 그래서 수업에 있는 다른 학생, 지은에게 민지가 수업에서 몇 번이나 잠들었는지 기록하라고 했습니다. 총 NN 개의 수업 기간이 있으며, 지은은 ii 번째 수업 기간에 민지가 aia_i 번 잠들었다고 기록했습니다. 모든 수업 기간 동안 민지가 잠든 총 횟수는 최대 101810^{18}입니다.

지은은 민지와 경쟁심을 느끼며, 선생님에게 민지가 매번 같은 횟수로 수업에서 자는 것처럼 보이게 하려고 합니다. 이렇게 하면 문제가 전적으로 민지 때문인 것처럼 보이게 됩니다.

지은이 기록을 수정할 수 있는 유일한 방법은 인접한 두 수업 기간을 합치거나 한 수업 기간을 두 개로 나누는 것입니다. 예를 들면, a=[1,2,3,4,5]a=[1,2,3,4,5]라면 지은이 두 번째와 세 번째 수업 기간을 합치면 기록은 [1,5,4,5][1,5,4,5]가 됩니다. 그 다음 세 번째 수업 기간을 두 개로 나누면 기록은 [1,5,0,4,5][1,5,0,4,5], [1,5,1,3,5][1,5,1,3,5], [1,5,2,2,5][1,5,2,2,5], [1,5,3,1,5][1,5,3,1,5], [1,5,4,0,5][1,5,4,0,5] 중 하나가 될 수 있습니다.

민지가 가장 좋아하지 않는 숫자에 대한 QQ 개의 후보 q1,,qQq_1, \ldots,q_Q가 주어질 때, 각각의 후보에 대해 지은이가 기록의 모든 항목을 qiq_i로 변환하기 위해 필요한 최소 수정 횟수를 계산해주세요.

💻 입력

각 테스트 케이스의 첫 번째 줄에는 NN이 포함되어 있고, 두 번째 줄에는 a1,a2,,aNa_1,a_2, \ldots,a_N이 포함되어 있습니다. 세 번째 줄에는 QQ가 있고, 그 다음 QQ 개의 줄에는 각각 qiq_i가 포함되어 있습니다.

🖨️ 출력

각 q_i에 대해, 지은이가 모든 항목을 qiq_i로 변환하기 위해 필요한 최소 수정 횟수를 계산해주세요.
불가능한 경우 -1을 출력합니다.


💻 예제 입력 1
6
1 2 3 1 1 4
7
1
2
3
4
5
6
12
🖨️ 예제 출력 1
6
6
4
5
-1
4
5

💡 힌트
  1. 지은이가 모든 항목을 3으로 변환하기 위해 최소 4번의 수정이 필요합니다.
   1 2 3 1 1 4
-> 3 3 1 1 4 : 첫 번째와 두 번째 수업을 합침
-> 3 3 1 5: 네 번째와 다섯 번째 수업을 합침
-> 3 3 6: 세 번째와 네 번째 수업을 합침
-> 3 3 3 3: 6을 3과 3으로 분할

   2. 지은이가 모든 항목을 5로 변환하는 것은 불가능하므로, 그 후보에 대한 올바른 출력값은 -1입니다.

 

점수:

  • 테스트 케이스 2-4에서는 N, Q ≤ 5000
  • 테스트 케이스 5-7에서는 모든 a_i는 최대 10^9이다.
  • 테스트 케이스 8-26에서는 추가 제약조건이 없다.

출처: USACO 2022 February Contest, Platinum Problem 2. Sleeping in Class