Submission #486730

#TimeUsernameProblemLanguageResultExecution timeMemory
486730perchutsKarte (COCI18_karte)C++17
108 / 120
129 ms8396 KiB
#include <bits/stdc++.h> #define maxn (int)(1e5+51) #define all(x) x.begin(), x.end() #define sz(x) (int) x.size() #define endl '\n' #define ll long long #define ull unsigned long long #define ii pair<int,int> #define iii tuple<int,int,int> #define inf (int)(2e9+1) #define mod (int)(1e9+7) using namespace std; int v[5*maxn],ans[5*maxn]; set<int>cards; int main() { ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); int n,k,cnt=0; cin>>n>>k; for(int i=1;i<=n;i++){ int x; cin>>x; v[x]++; cards.insert(x); if(x>k)cnt++; } if(cnt>k){ cout<<"-1"<<endl; return 0; } for(int i=0;i<k;i++){ if(k-i-1<cnt){ set<int>::iterator it2=cards.lower_bound(k+1); v[*it2]--; ans[i]=*it2; if(v[*it2]==0){ cards.erase(*it2); } }else{ set<int>::iterator it=cards.lower_bound(i+1); if(it==cards.end()){ cout<<"-1"<<endl; return 0; }else{ v[*it]--; ans[i]=*it; if(v[*it]==0){ cards.erase(*it); } } } } int ind=k; for(int i=0;i<=5*100000;i++){ while(v[i]){ ans[ind++]=i; v[i]--; } } reverse(ans,ans+n); for(int i=0;i<n;i++) cout<<ans[i]<<" "; }
#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...