만드는 중입니다

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

Cowdependence

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

요약
1부터 N까지 각 x마다, 같은 라벨의 소를 묶되 한 묶음 안의 모든 소가 서로 x 칸 이내에 있도록 할 때 필요한 최소 묶음 수를 구합니다.
난이도

보통10점 중 7점

유형
그리디, 해시맵, 배열
정답자
아직 제출이 없습니다

문제

농부 존의 소 NN마리(1≤N≤1051 \leq N \leq 10^5)가 일렬로 서 있다. ii번째 소의 라벨은 aia_i(1≤ai≤N1 \leq a_i \leq N)이다. 같은 라벨을 가진 소들로 이루어진 그룹에서, 모든 소가 그룹 안의 다른 모든 소와 xx마리 이내에 있으면 이 그룹을 친구 그룹으로 만들 수 있다. 여기서 xx는 [1,N][1, N] 범위의 정수다. 모든 소는 정확히 하나의 친구 그룹에 속해야 한다.

xx를 11부터 NN까지 바꿔 가며, 각 xx에 대해 만들 수 있는 친구 그룹의 최소 개수를 구한다.

입력

첫 줄에 정수 NN이 주어진다.

다음 줄에 소들의 라벨 a1,…,aNa_1, \dots, a_N이 주어진다.

출력

xx를 11부터 NN까지 바꿔 가며, 각 xx에 대한 친구 그룹의 최소 개수를 한 줄에 하나씩 출력한다.

힌트

샘플에서 라벨이 1,1,1,9,2,1,2,1,11, 1, 1, 9, 2, 1, 2, 1, 1인 소들은 x=1x=1일 때 7개 그룹, x=2x=2일 때 5개 그룹이 필요하다.

예제1

  1. 예제 1

    입력
    9
    1 1 1 9 2 1 2 1 1
    
    예상 출력
    7
    5
    4
    4
    4
    4
    4
    3
    3