카드 뒤집기 1

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

요약
각 카드를 뒤에 있는 모든 카드와 비교해 더 작은 값이 보이면 뒤집는 과정을 거친 뒤, 마지막에 위를 향하는 값을 출력한다.
난이도

보통10점 중 5점

유형
배열, 정렬, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

카드 뒤집기 1, 2는 서로 다른 문제다.

준원이는 카드 NN장을 가지고 있다. 카드의 앞면에는 정수 1,2,⋯ ,N1,2,\cdots ,N이 하나씩 적혀 있고, 카드의 뒷면에는 모두 정수 00이 적혀있다. 준원이는 카드의 순서를 마음대로 바꾼 뒤 NN장의 카드를 윗면이 천장을 향하도록 나열했다. 나열된 카드에서 천장을 향하는 면에 적힌 정수는 p_1,p_2,⋯ ,p_Np\_1,p\_2,\cdots ,p\_N이 되었다.

준원이는 ii를 11부터 NN까지 11씩 증가시키며 다음과 같은 행동을 반복한다.

  • ii번째 카드와 j(i\<j≤N)j(i\<j\le N)번째 카드를 비교한다. i,ji,j번째 카드의 천장을 향하는 면에 적힌 정수를 X,YX,Y라고 할 때, X>YX>Y를 만족하는 모든 jj번째 카드를 뒤집는다.

모든 행동을 끝낸 후, 각 카드의 천장을 향하는 면에 적힌 정수를 구해보자.

입력

첫째 줄에 정수 N(1≤N≤200,000)N(1\le N\le 200\\, 000)이 주어진다.

둘째 줄에 정수 p_1,p_2,⋯ ,p_N(1≤p_i≤N)p\_1,p\_2,\cdots ,p\_N(1\le p\_i\le N)이 공백으로 구분되어 주어진다.

출력

모든 행동을 끝낸 후, 각 카드의 천장을 향하는 면에 적힌 정수를 공백으로 구분하여 출력한다.

예제3

  1. 예제 1

    입력
    4
    1 2 3 4
    
    예상 출력
    1 2 3 4
    
  2. 예제 2

    입력
    4
    3 4 2 1
    
    예상 출력
    3 4 2 0
    
  3. 예제 3

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