체인

면접 대비

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

요약
각 원소에서 오른쪽의 첫 더 큰 원소로 이동을 반복한 연쇄의 길이를 모든 위치마다 구합니다.
난이도

보통10점 중 6점

유형
스택, 동적 계획법, 배열
정답자
아직 제출이 없습니다

문제

N개의 정수 a1,a2,…,ana_1, a_2, \ldots, a_n이 주어진다. 각 원소 aka_k (k=1,2,…,nk = 1, 2, \ldots, n)에 대해, aka_k보다 크면서 aka_k의 오른쪽에 있는 첫 번째 원소를 찾는다(존재하는 경우). 이를 ak1a_{k1}이라 하자. 그런 다음 ak1a_{k1}에 대해 같은 과정을 반복해 ak2a_{k2}를 찾고, 수열이 끝날 때까지 이어간다. 이렇게 만들어진 부분 수열 ak1,ak2,…a_{k1}, a_{k2}, \ldots를 인덱스 kk에서 시작하는 체인이라 부른다.

프로그램 chain을 작성하여, 각 인덱스 kk에서 시작하는 체인의 길이를 출력하라.

입력

표준 입력의 첫째 줄에 NN이 주어진다. 둘째 줄에 주어진 수열의 원소들이 공백으로 구분되어 주어진다.

출력

표준 출력의 한 줄에, 입력 데이터의 각 원소에 대응하는 체인의 길이를 출력한다. 연속하는 두 수는 공백 하나로 구분한다.

제한

  • 0<N<500 0000 < N < 500\,000
  • 0<ai<1 000 0000 < a_i < 1\,000\,000, i=1,…,Ni = 1, \ldots, N

예제1

  1. 예제 1

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