#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n, k; cin >> n >> k;
    multiset<int> x;
    for(int i = 0; i < n; i++){
        int a; cin >> a;
        x.insert(a);
    }
    multiset<int> m;
    for(int i = 0; i < k; i++){
        m.insert(*x.rbegin());
        x.erase(prev(x.end()));
    }
    vector<int> ns(n);
    for(int i = 0; i < n; i++){
        auto it = x.upper_bound(k);
        if(it == x.begin()){
            ns[i] = *m.begin(); 
            if(ns[i] < k){
                ns.clear();
                break;
            }
            m.erase(m.begin());
            k--;
            continue;
        }
        it--;
        ns[i] = *it;
        x.erase(it);
    }
    if(ns.size() == 0){
        cout << -1 << "\n";
        return 0;
    }
    for(int i = 0; i < n; i++){
        cout << ns[i] << " ";
    }cout << "\n";
    return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |