오등큰수

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

요약
각 위치마다 오른쪽에서 전체 등장 횟수가 현재 원소의 등장 횟수보다 큰 가장 가까운 값을 찾고, 없으면 -1을 출력한다.
난이도

보통10점 중 5점

유형
스택, 해시맵, 배열, 구현
정답자
아직 제출이 없습니다

문제

크기가 NN인 수열 A=A1,A2,⋯ ,ANA = A_1, A_2, \cdots, A_N이 있다. 수열의 각 원소 AiA_i에 대해 오등큰수 NGF(i)NGF(i)를 구하려고 한다.

AiA_i가 수열 AA에서 등장한 횟수를 F(Ai)F(A_i)라고 할 때, AiA_i의 오등큰수는 오른쪽에 있으면서 수열 AA에서 등장한 횟수가 F(Ai)F(A_i)보다 큰 수 가운데 가장 왼쪽에 있는 수를 말한다. 그러한 수가 없으면 오등큰수는 −1-1이다.

예를 들어 A=[1,1,2,3,4,2,1]A = [1, 1, 2, 3, 4, 2, 1]인 경우 F(1)=3F(1) = 3, F(2)=2F(2) = 2, F(3)=1F(3) = 1, F(4)=1F(4) = 1이다. A1A_1의 오른쪽에 있으면서 등장 횟수가 3보다 큰 수는 없으므로 NGF(1)=−1NGF(1) = -1이다. A3A_3의 경우 A7A_7이 오른쪽에 있고 F(A3=2)<F(A7=1)F(A_3 = 2) < F(A_7 = 1)이므로 NGF(3)=1NGF(3) = 1이다. NGF(4)=2NGF(4) = 2, NGF(5)=2NGF(5) = 2, NGF(6)=1NGF(6) = 1이다.

입력

첫째 줄에 수열 AA의 크기 NN (1≤N≤1,000,0001 \le N \le 1{,}000{,}000)이 주어진다. 둘째 줄에 수열 AA의 원소 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N (1≤Ai≤1,000,0001 \le A_i \le 1{,}000{,}000)이 주어진다.

출력

NN개의 수 NGF(1),NGF(2),⋯ ,NGF(N)NGF(1), NGF(2), \cdots, NGF(N)을 공백으로 구분해 출력한다.

예제1

  1. 예제 1

    입력
    7
    1 1 2 3 4 2 1
    
    예상 출력
    -1 -1 1 2 2 1 -1