I - チーズとネズミ (Cheeses and Mice)
解説
/
/
実行時間制限: 2 sec / メモリ制限: 1024 MiB
配点 : 100 点
問題文
ネズミの住む巣穴があり,巣穴の前に N 個のチーズが一列に並んでいる. 列の先頭から i 番目 (1 \leqq i \leqq N) の位置にあるチーズの大きさは i である.
巣穴の中にはネズミが M 匹住んでおり,1 から M までの番号が付けられている. ネズミ j (1 \leqq j \leqq M) は大きさが A_j 以上のチーズを好む. ここで,A_1 < A_2 < \cdots < A_M が満たされる.
ネズミたちはこれから N 日のあいだ毎日,以下の一連の行動をおこなう.
- j = 1, 2, \dots, M の順に,以下の操作をおこなう.
- ネズミ j が好むチーズが列の中に存在するならば,そのうち最も先頭に近い位置にあるものを選び,先頭のチーズと位置を入れ替える.ここで,選んだチーズが先頭にある場合や,好むチーズが存在しない場合は,何もしない.
- 列の先頭にあるチーズを列から取り除き,巣穴の中に引き入れる.
チーズとネズミの数,およびネズミの好みの情報が与えられたとき,N 日間のそれぞれの日に巣穴の中に引き入れられるチーズの大きさを求めるプログラムを作成せよ.
入力
入力は以下の形式で標準入力から与えられる.
N M
A_1 A_2 \cdots A_{M}
出力
標準出力に N 行出力せよ.
k 行目 (1 \leqq k \leqq N) には,k 日目に巣穴の中に引き入れられるチーズの大きさを出力せよ.
制約
- 1 \leqq M \leqq N \leqq 300\,000.
- 1 \leqq A_j \leqq N (1 \leqq j \leqq M).
- A_1 < A_2 < \cdots < A_M.
- 入力される値はすべて整数である.
小課題
- (11 点) N \leqq 300.
- (16 点) N \leqq 5\,000.
- (35 点) M = 1.
- (38 点) 追加の制約はない.
入力例 1
5 2 3 4
出力例 1
4 5 3 2 1
以下ではチーズの列の内容を,大きさを先頭から順に並べた数列で表す.はじめ,列は (1,2,3,4,5) である. 5 日間のネズミたちの行動は,以下のように進行する.
- ネズミ 1 は大きさ 3 のチーズを選び,列は (3,2,1,4,5) になる.ネズミ 2 は大きさ 4 のチーズを選び,列は (4,2,1,3,5) になる.最後に大きさ 4 のチーズが列から取り除かれ,列は (2,1,3,5) になる.
- ネズミ 1 は大きさ 3 のチーズを選び,列は (3,1,2,5) になる.ネズミ 2 は大きさ 5 のチーズを選び,列は (5,1,2,3) になる.最後に大きさ 5 のチーズが列から取り除かれ,列は (1,2,3) になる.
- ネズミ 1 は大きさ 3 のチーズを選び,列は (3,2,1) になる.ネズミ 2 は何もしない.最後に大きさ 3 のチーズが列から取り除かれ,列は (2,1) になる.
- どちらのネズミも何もしない.大きさ 2 のチーズが列から取り除かれ,列は (1) になる.
- どちらのネズミも何もしない.大きさ 1 のチーズが列から取り除かれ,列は空になる.
この入力例は小課題 1,2,4 の制約を満たす.
入力例 2
3 1 2
出力例 2
2 3 1
この入力例はすべての小課題の制約を満たす.