Jada kustutamine | 프로그래밍의 벗 PivotOJ
PivotOJ

Jada kustutamine

시간 제한: 2000ms메모리 제한: 1024MB출처: EIO 2021-22 sel1BOJ 29869

문제

Me kõik tunneme funktsioone min\min ja max\max, mis leiavad vastavalt vähima ja suurima hulka kuuluva väärtuse. Vaatleme nüüd funktsiooni mex\text{mex}, mis arvu\-hulgale rakendatuna tagastab minimaalse hulka mittekuuluva mittenegatiivse täisarvu (funktsiooni nimi tulebki ingliskeelsest väljendist minimal excluded). Näiteks mex({1,2,3})=0\text{mex}(\{1,2,3\}) = 0 ja mex({0,1,2,4,5})=3\text{mex}(\{0,1,2,4,5\}) = 3.

Magnus tutvus funktsiooni mex\text{mex} definitsiooniga ja leiutas kohe sellel põhineva mängu. Selles mängus saab mängija NN-elemendilise mittenegatiivsete täisarvude jada AA ja koostab selle põhjal jada BB, korrates järgmisi samme, kuni jadas AA on veel elemente:

  1. Vali positiivne täisarv kk, mis ei ületa jada AA pikkust.
  2. Lisa jada BB lõppu jada AA esimese kk elemendi mex\text{mex}.
  3. Kustuta jadast AA selle esimesed kk elementi.

Mängija ülesanne on valida igal sammul selline kk väärtus, et saadud jada BB oleks kõigi võimalike hulgas leksikograafiliselt maksimaalne. Tuletame meelde, et jada x=x1,x2,,xnx = x_1, x_2, \ldots, x_n on jadast y=y1,y2,,ymy = y_1, y_2, \ldots, y_m leksikograafiliselt suurem, kui

  • leidub selline ii, et ini \le n ja imi \le m ning x1=y1x_1 = y_1, x2=y2x_2 = y_2, \ldots, xi1=yi1x_{i-1} = y_{i-1} ja xi>yix_i > y_i või
  • n>mn > m ja x1=y1x_1 = y_1, x2=y2x_2 = y_2, \ldots, xm=ymx_m = y_m.

입력

Sisendi esimesel real on jada AA pikkus NN (1N5000001 \le N \le 500\,000) ja teisel real NN tühikutega eraldatud täisarvu: jada AA elemendid AiA_i (0AiN0 \le A_i \le N).

출력

Väljundi esimesele reale väljastada leitud jada BB pikkus MM ja teisele reale tühikutega eraldatult jada BB elemendid B1,B2,,BMB_1, B_2, \ldots, B_M.

예제

예제 1

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

예제 2

입력
8
2 2 3 4 0 1 2 0
출력
2
5 1
코드를 제출하려면 로그인하세요.