OIG VI - prz

// https://szkopul.edu.pl/problemset/problem/aPqgk8oaUsM4nB6FLjxehRPe/site/?key=statement
// OIG VI (2 etap)

#include <iostream>

constexpr int sizik = 1000 * 1001;
int curr = 0, local_maxi = 0;

int val[sizik];
int nym[sizik];

int main() {
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(0);
    std::cout.tie(0);

    int n, m;
    std::cin >> n >> m;

    for (int i = 0; i < m; i++) {
        int a;
        std::cin >> a;

        if (a == n + 1) {
            nym[++curr] = local_maxi;
        } else {
            if (val[a] < nym[curr]) {
                val[a] = nym[curr] + 1;
            } else {
                val[a]++;
            }

            if (val[a] > local_maxi) {
                local_maxi = val[a];
            }
        }
    }

    for (int i = 1; i <= n; i++) {
        if (val[i] < nym[curr]) {
            val[i] = nym[curr];
        }

        std::cout << val[i] << ' ';
    }

    return 0;
}