Go: package main

import (
	"fmt"
)

func main() {
	var n int // こま数

	_, _ = fmt.Scan(&n)

	xa := make([]int, n) // こま座標

	for i:= 0;i < n ; i++ {
		_, _ = fmt.Scan(&xa[i])
	}

	var m int // 操作数

	_, _ = fmt.Scan(&m)

	ma := make([]int, m) // 操作対象

	for i:= 0;i < m ; i++ {
		_, _ = fmt.Scan(&ma[i])
	}

	for _, v := range calc(xa, ma) {
		fmt.Println(v)
	}
}

func calc(xa []int, ma []int) []int {
	for _, v := range ma {
		if xa[v-1] < 2019 {
			if  len(xa) != v {
				if xa[v]-1 != xa[v-1] {
					xa[v-1]++
				}
			} else {
				xa[v-1]++
			}
		}
	}
	return xa
}

C++: #include <bits/stdc++.h>

using namespace std;

#define int long long
#define endl '\n'
#define MOD 1000000007
#define maxn 100010

void solve() {
    int n;
    cin >> n;

    map<int, int> mp;
    set<pair<int, int>> cont;
    vector<int> v(2019 + 1);
    for (int i = 1; i <= n; ++i) {
        int tp;
        cin >> tp;

        v[tp] = i;
        cont.insert({i, tp});
        mp[i] = tp;
    }

    int m;
    cin >> m;

    for (int i = 1; i <= m; i++) {
        int a;
        cin >> a;

        int tp = a;
        a = mp[a];
        if (a + 1 > 2019)
            continue;
        if (v[a + 1] != 0) {
            continue;
        } else {
            cont.erase({v[a], a});
            v[a + 1] = v[a];
            v[a] = 0;
            mp[tp] = a + 1;
            cont.insert({v[a + 1], a + 1});
        }
    }
    vector<int> ans;
    for (auto x: cont)
        ans.push_back(x.second);
    for (int i = 0; i < ans.size(); i++) {
        cout << ans[i];
        if (i != ans.back())
            cout << endl;
    }
}

int32_t main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int t = 1;
//    cin >> t;

    while (t--)
        solve();
    return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;

int main() {
    int n,m,d,i=0,j=0;
    cin>>n;
    int xnAll[n+1];
    xnAll[n]=2020;
    while(i<n){
        cin>>d;
        xnAll[i]=d;
        i++;
    }
    cin>>m;
    while(j<m){
        cin>>d;
        if(xnAll[d-1]+1!=xnAll[d]){
            xnAll[d-1]++;
        }
        j++;
    }
    for (int k = 0; k < n; k++)
    {
        cout << xnAll[k] << endl;
    }
    return 0;
}

C++: /* --- Sugoroku and Pieces ---
とにかく、足す.
足したときに、
i) (A_i) + 1 ≠ (A_i+1)であること.
ii) A_i ≠ 2019であること.
この２つの条件が満たされているかを確かめる.　←　この処理をmoveとする.

まとめると:
	N個の駒がある.　→　それぞれの駒の座標を格納できる「配列」Aを用意. 長さはNである.
	そのあと、M個のクエリが寄せられる.(たぶんクエリじゃない)　→　そのクエリ(?)を格納する「配列」Bを用意. 長さはMである.
	A.at(B.at(i) - 1)について、上記の処理moveを行う.
*/
#include <iostream>
#include <vector>
using namespace std;

int main() {
	int N; cin >> N;
	vector<int>X(N + 1);
	for (int i = 0; i < N; i++) {
		cin >> X.at(i);
	}
	int M; cin >> M;
	vector<int>A(M);
	for (int i = 0; i < M; i++) {
		cin >> A.at(i);
		if (X.at(A.at(i) - 1) + 1 != X.at(A.at(i)) && X.at(A.at(i) - 1) != 2019) X.at(A.at(i) - 1)++;
	}

	for (int i = 0; i < N; i++) {
		cout << X.at(i) << endl;
	}
}

C++: #include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> P(2020, 0);

    int N;
    cin >> N;
    vector<int> X(N + 1);
    for (int i = 1; i <= N; i++)
    {
        cin >> X[i];
        P[X[i]] = i;
    }

    int M;
    cin >> M;
    for (int j = 0; j < M; j++)
    {
        int A;
        cin >> A;
        int p = X[A];
        if (p < 2019 && P[p + 1] == 0)
        {
            P[p] = 0;
            P[p + 1] = A;
            X[A] += 1;
        }
    }

    for (int i = 1; i <= N; i++)
    {
        cout << X[i] << endl;
    }

    return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;
int main(void){
    int n,x,m,a;
    deque<int> deq;
    cin>>n;
    for (int i=0;i<n;i++) {
        cin>>x;
        deq.emplace_back(x);
    }
    cin>>m;
    for (int j=0;j<m;j++) {
        cin>>a;
        if (deq[a-1]==2019) {
            continue;
        } else if (find(deq.begin(),deq.end(),deq[a-1]+1)!=deq.end()) {
            continue;
        } else {
            deq[a-1]++;
        }
    }
    for (int k=0;k<deq.size();k++) {
        cout<<deq[k]<<endl;
    }
}

C++: #include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <fstream>
#include <iostream>
#include <map> 
#include <queue>
#include <string>
#include <stack>
#include <vector>
using namespace std;
typedef long long ll;
int main(){
  int n;
  cin >> n;
  vector<int> x(n);
  map<int,bool> pos;
  for(int i = 0;i < n;i++){
    cin >> x[i];
    pos[x[i]] = true;
  }

  int m;
  cin >> m;
  for(int i = 0;i < m;i++){
    int a;
    cin >> a;
    a--;
    if(x[a] == 2019)continue;

    if(pos[x[a]+1] == false){
      pos[x[a]] = false;
      pos[x[a]+1] = true;
      x[a]++;
    }
    else continue;
  }

  for(int i = 0;i < n;i++)cout << x[i] << endl;
}

C++: #include <bits/stdc++.h>
using namespace std;

int main() {
    int n, m, pos[100];
    bool masu[2020]{};
    cin >> n;
    for(int i=0;i<n;i++){
        cin >> pos[i];
        masu[pos[i]] = true;
    }
    cin >> m;
    for(int i=0;i<m;i++){
        int a;
        cin >> a;
        a--;
        if(pos[a] < 2019 && !masu[pos[a]+1]){
            masu[pos[a]] = false;
            masu[pos[a]+1] = true;
            pos[a]++;
        }
    }
    for(int i=0;i<n;i++){
        cout << pos[i] << endl;
    }
    return 0;
}

C++: #include <iostream>
#include <vector>
using namespace std;

int main() {
	int N;
	cin >> N;
	vector<int> koma(N);
	for (int i = 0; i < N; i++)
		cin >> koma[i];
	int M;
	cin >> M;

	int num = 0;
	for(int i = 0; i < M; i++) {
		cin >> num;
		if(num<N) {
			if(koma[num-1] < 2019 && koma[num-1]+1 < koma[num])
				koma[num-1]++;
		} else {
			if(koma[num-1] < 2019)
				koma[num-1]++;
		}
	}

	for(int i = 0; i < N; i++)
		cout << koma[i] << endl;
}

C++: // 2019/07/02 Tazoe

#include <iostream>
using namespace std;

int main()
{
	int N;
	cin >> N;

	int X[102];
	for(int i=1; i<=N; i++){
		cin >> X[i];
	}
	X[N+1] = 2020;

	int M;
	cin >> M;

	for(int j=0; j<M; j++){
		int A;
		cin >> A;

		if(X[A]==2019 || X[A+1]==X[A]+1)
			continue;

		X[A]++;
	}

	for(int i=1; i<=N; i++){
		cout << X[i] << endl;
	}

	return 0;
}

C++: #pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<n;i++)
#define cinf(n,x) for(int i=0;i<(n);i++)cin>>x[i];
#define max3(a,b,c) max(max(a,b),c)
#define min3(a,b,c) min(min(a,b),c)
#define ft first
#define sc second
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define all(v) (v).begin(),(v).end()
#define mod 1000000007
using namespace std;
typedef long long ll;
template<class T> using V=vector<T>;
using Graph = vector<vector<int>>;
using P=pair<ll,ll>;
typedef unsigned long long ull;
typedef long double ldouble;
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }
//V,P(大文字)使用不可

const ll INF=1000000000000000000;

signed main(){
    int n;
    cin>>n;
    V<int> x(n);
    cinf(n,x);
    int m;
    cin>>m;
    V<int> a(m);
    for(int i=0;i<m;i++){
        cin>>a[i];
        a[i]--;
    }
    V<bool> ok(2021,0);
    int t=0;
    for(int i=1;i<=2019;i++){
        if(i==x[t]){
            t++;
            ok[i]=1;
            if(t==n) break;
        }
    }
    for(int i=0;i<m;i++){
        if(x[a[i]]==2019||ok[x[a[i]]+1]) continue;
        ok[x[a[i]]]=0;
        x[a[i]]++;
        ok[x[a[i]]]=1;
    }
    for(int i=0;i<n;i++) cout<<x[i]<<endl;
}

C++: #include<bits/stdc++.h>
using namespace std;
int main(){
    int n,x[100],a;
    cin>>n;
    for(int i=0;i<n;i++)
        cin>>x[i];
    cin>>a;
    while(cin>>a)
        if(x[a-1]!=2019&&x[a-1]+1!=x[a])
            x[a-1]++;
    for(int i=0;i<n;i++)
        cout<<x[i]<<endl;
}