제출 #1256442

#제출 시각아이디문제언어결과실행 시간메모리
1256442ilhan_ardaKarte (COCI18_karte)C++20
120 / 120
125 ms6900 KiB
#include <bits/stdc++.h>
#define fast ios_base::sync_with_stdio(NULL);cin.tie(NULL);cout.tie(NULL);
#define fi first
#define se second
#define pb push_back
#define endl "\n"
//~ #define int long long

using namespace std;

typedef long long ll;
typedef pair<int, int> ii;

int n, k;
int a[500005];
vector<int> ans, bg, v;
int32_t main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1, a+n+1);
	int t = 0;
	for(int i=1;i<=n;i++){
		if(a[i] > k){
			t++;
			bg.pb(i);
		}
	}
	if(t > k){
		cout<<-1<<endl;
		return 0;
	}
	int cur = 0, ind = n+5;
	for(int i=1;i<=n;i++){
		if(cur+t == k || a[i] > k){
			ind = i;
			break;
		}
		if(cur>=a[i]){
			v.pb(i);
			continue;
		}
		ans.pb(i);
		cur++;
	}
	if(cur+t < k){
		cout<<-1<<endl;
		return 0;
	}
	for(int i=ind;i<=n;i++){
		if(a[i] > k)break;
		v.pb(i);
	}
	reverse(ans.begin(), ans.end());
	for(auto it: v)cout<<a[it]<<" ";
	for(auto it: bg)cout<<a[it]<<" ";
	for(auto it: ans)cout<<a[it]<<" ";
	cout<<endl;
	
}











#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...