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

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

벽돌 줄 세우기

시간 제한3초메모리 제한256 MB

요약
모든 벽돌을 이웃한 색이 다르고 양 끝이 p와 q가 되게 늘어놓고 사전 순으로 가장 앞선 경우나 0을 출력합니다.
난이도

보통10점 중 7점

유형
그리디, 힙
정답자
아직 제출이 없습니다

문제

비티와 친구들은 어제 하루 종일 유치원에서 색깔 벽돌을 가지고 놀았다. 처음에는 건물 모형을 만들었지만 금방 싫증이 나서, 벽돌을 한 줄로 늘어놓기로 했다. 줄이 밋밋해 보이지 않도록 같은 색 벽돌은 서로 옆에 두지 않았고, 한참 만에 모든 벽돌을 이 규칙대로 늘어놓는 데 성공했다. 그리고 하원 시간이 되어 아이들은 집으로 돌아갔다.

오늘 아침 일찍 유치원에 온 비티는 어제 만든 줄이 그대로 남아 있는 것을 보고 기뻐했다. 그런데 하필 그 줄 위로 넘어지는 바람에 벽돌이 모두 흐트러져 한 무더기가 되었다. 비티는 벽돌을 색깔별로 모아 놓고, 어떻게 하면 완벽한 줄을 빨리 다시 만들 수 있을지 고민한다. 다행히 줄의 양 끝에 놓여 있던 벽돌 두 개의 색은 기억하고 있다.

비티가 가진 색깔별 벽돌 개수와 양 끝 벽돌의 색이 주어진다. 이웃한 두 벽돌의 색이 서로 다르고, 첫 벽돌의 색이 pp, 마지막 벽돌의 색이 qq인 줄을 만들어라. 비티가 색을 잘못 기억했을 수도 있고 넘어진 뒤 찾지 못한 벽돌이 있을 수도 있어서, 줄을 다시 만들지 못하는 경우도 있다.

입력

첫째 줄에 벽돌 색의 개수 kk, 줄의 첫 벽돌 색 pp, 마지막 벽돌 색 qq가 공백 하나로 구분되어 주어진다. (1≤k≤1061 \le k \le 10^6, 1≤p,q≤k1 \le p, q \le k)

둘째 줄에 kk개의 정수 i1,i2,…,iki_1, i_2, \dots, i_k가 공백 하나로 구분되어 주어진다. iji_j는 비티가 가진 색 jj 벽돌의 개수다. (1≤ij≤1061 \le i_j \le 10^6)

벽돌의 총 개수 n=i1+i2+⋯+ikn = i_1 + i_2 + \dots + i_k는 10610^6 이하다.

출력

조건을 만족하는 줄에 놓인 벽돌의 색을 앞에서부터 nn개, 공백 하나로 구분해 한 줄에 출력한다. 첫 벽돌의 색은 pp, 마지막 벽돌의 색은 qq이고, 이웃한 두 벽돌의 색은 서로 달라야 한다.

조건을 만족하는 줄이 여럿이면 그중 사전순으로 가장 앞서는 줄 하나만 출력한다. 조건을 만족하는 줄이 하나도 없으면 정수 0 하나만 출력한다.

노트

길이가 같은 두 줄 AA와 BB를 비교할 때는 색이 처음으로 달라지는 자리를 본다. 그 자리에 더 작은 색 번호가 놓인 줄이 사전순으로 앞선다.

예제2

  1. 예제 1

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

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