Problem:
すごろくと駒 (Sugoroku and Pieces)

問題文

JOI 君はすごろくを持っている．このすごろくは 2019 個のマスが横一列に並んだ形をしている．これらのマスには，左端のスタートマスから右端のゴールマスへと順に 1 から 2019 までの番号がついている．

現在このすごろくの上には，N 個の駒が置かれている．これらの駒には，スタートに近い順に 1 から N までの番号がついている．駒 i (1 ≦ i ≦ N) は，マス X_i に置かれている．すべての駒は異なるマスに置かれている．

JOI 君はこれから M 回の操作を行う．j 回目 (1 ≦ j ≦ M) の操作では，駒 A_j を 1 マス先へ進める．ただし，移動元のマスがゴールマスであった場合，もしくは移動先のマスに別の駒が置かれている場合，駒 A_j は進まず，位置は変わらない．

すべての操作が終了した時点で，各駒が置かれているマスを求めよ．

制約

1 ≦ N ≦ 100

1 ≦ X_1 < X_2 < ... < X_N ≦ 2019

1 ≦ M ≦ 100

1 ≦ A_j ≦ N (1 ≦ j ≦ M)

入力・出力

入力

入力は以下の形式で標準入力から与えられる．

N

X_1 X_2 ... X_N

M

A_1 A_2 ... A_M

出力

N 行出力せよ．i 行目 (1 ≦ i ≦ N) には，すべての操作が終了した時点で駒 i が置かれているマスの番号を出力せよ．

入出力例

入力例 1

3
2 3 6
2
1 3

出力例 1

2
3
7

1 回目の操作では，駒 1 をマス 2 からマス 3 へと進めようする．しかし，駒 2 がすでにマス 3 に置かれているため，駒 1 は進まない．

2 回目の操作では，駒 3 をマス 6 からマス 7 へと進める．

すべての操作が終了した時点で，駒 1 はマス 2 に，駒 2 はマス 3 に，駒 3 はマス 7 に置かれている．

入力例 2

2
1 2016
4
2 2 2 2

出力例 2

1
2019

3 回目の操作が完了した時点で，駒 2 はマス 2019 に置かれている．そのため，4 回目の操作では駒 2 は進まない．

入力例 3

4
1001 1002 1003 1004
7
1 2 3 4 3 2 1

出力例 3

1002
1003
1004
1005

情報オリンピック日本委員会作 『第 18 回日本情報オリンピック JOI 2018/2019 予選競技課題』

Solution in Kotlin (judge verdict: Accepted)

fun main(args: Array<String>) {

    val n = readLine()!!.toInt()
    var x = readLine()!!.split(" ").map(String::toInt).toMutableList()
    val m = readLine()!!.toInt()
    val a = readLine()!!.split(" ").map(String::toInt)

    val o = 2019

    for (i in 0..m-1) {

        if (a[i] >= n) {
            //一番右端のコマ確定
            if (x[a[i]-1] < o) {
                x[a[i]-1] = x[a[i]-1] + 1
            }
        } else {
            if (x[a[i]-1]+1 != x[a[i]]) {
                x[a[i]-1] = x[a[i]-1] + 1
            }    
        }
    }
    x.forEach {i ->  println(i)}
}