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

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

HILO

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

요약
엘시가 사용하는 순열이 주어질 때, 가능한 모든 숨은 정수 x에 대해 응답 문자열에서 부분 문자열 HILO가 몇 번 나타나는지 센다.
난이도

어려움10점 중 8점

유형
시뮬레이션, 구현, 완전 탐색, 정렬
정답자
아직 제출이 없습니다

문제

Bessie는 어떤 수 x+0.5x+0.5를 알고 있다. 여기서 xx는 00 이상 NN 이하의 정수이다 (1≤N≤2⋅1051\le N\le 2 \cdot 10^5).

Elsie는 이 수를 맞히려고 한다. Elsie는 11 이상 NN 이하의 정수 ii에 대해 "ii는 high인가 low인가?"라는 질문을 할 수 있다. Bessie는 ii가 x+0.5x+0.5보다 크면 "HI"라고, ii가 x+0.5x+0.5보다 작으면 "LO"라고 답한다.

Elsie는 Bessie의 수를 맞히기 위해 다음과 같은 전략을 세운다. 추측을 시작하기 전에 11부터 NN까지의 모든 수가 정확히 한 번씩 들어 있는 길이 NN의 수열을 만든다. 즉, 이 수열은 크기 NN의 순열이다. 그런 다음 수열을 순서대로 훑으며 수열에 나타난 수를 추측한다.

다만 Elsie는 불필요한 추측을 건너뛴다. Elsie가 어떤 수 ii를 추측하려는데 이전에 어떤 j<ij < i를 추측해서 Bessie가 "HI"라고 답한 적이 있다면, Elsie는 ii를 추측하지 않고 수열의 다음 수로 넘어간다. 마찬가지로 어떤 수 ii를 추측하려는데 이전에 어떤 j>ij > i를 추측해서 Bessie가 "LO"라고 답한 적이 있다면, Elsie는 ii를 추측하지 않고 수열의 다음 수로 넘어간다. 이 전략을 쓰면 Elsie가 어떤 순열을 만들든 항상 xx를 유일하게 알아낼 수 있다.

Bessie의 "HI" 또는 "LO" 응답을 모두 이어 붙여 하나의 문자열 SS를 만들면, Bessie가 "HILO"라고 말한 횟수는 SS의 길이 44 부분 문자열 중 "HILO"와 같은 것의 개수이다.

Bessie는 Elsie가 이 전략을 쓴다는 것과 Elsie가 사용할 순열이 정확히 무엇인지도 알고 있다. 하지만 어떤 xx를 고를지는 아직 정하지 않았다.

Bessie가 각 xx에 대해 "HILO"를 몇 번 말하게 되는지 구하자.

입력

첫째 줄에 NN이 주어진다.

둘째 줄에 Elsie의 크기 NN 순열이 주어진다.

출력

xx가 00부터 NN까지일 때 Bessie가 HILO를 말하는 횟수를 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

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