#include <bits/stdc++.h>
using namespace std;
#ifdef LOCAL
#define deb(...) logger(#__VA_ARGS__, __VA_ARGS__)
template<typename ...Args>
void logger(string vars, Args&&... values) {
cerr<<vars<<" = ";
string delim="";
(...,(cerr<<delim<<values,delim=", "));
cerr<<"\n";
}
#else
#define deb(...) logger(#__VA_ARGS__, __VA_ARGS__)
template<typename ...Args>
void logger(string vars, Args&&... values) {}
#endif
#define pb push_back
#define sz(x) (int)(x.size())
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
template<typename T> inline void maxa(T& a,T b){a=max(a,b);}
template<typename T> inline void mina(T& a,T b){a=min(a,b);}
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const int mxN=1e5+5; //make sure this is right
const int mod=1e9+7;
int main(){
cin.sync_with_stdio(0);
cin.tie(0); cout.tie(0);
#ifdef LOCAL
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
int n,k; cin>>n>>k;
int cnt=0;
vector<int> a(n),f(n),amt(n);
for(int &i:a)
cin>>i;
for(int i=n-1;i>=0;i--){
if(cnt<a[i]){ //false
f[i]=1;
cnt++;
}
amt[i]=cnt;
}
for(int i=0;i<n-1;i++){
if(!f[i+1]){
if(cnt<k){
if(a[i+1]<a[i]){
swap(a[i],a[i+1]);
swap(f[i],f[i+1]);
}
} else{
if(a[i+1]>a[i]){
swap(a[i+1],a[i]);
swap(f[i],f[i+1]);
}
}
continue;
}
if(cnt<k && !f[i]){
swap(a[i],a[i+1]);
swap(amt[i],amt[i+1]);
amt[i+1]--;
if(amt[i+1]<a[i+1]){
f[i+1]=1;
cnt++;
deb(cnt,i+1,amt[i+1],a[i+1]);
}
} else if(cnt>k && f[i]){
swap(a[i],a[i+1]);
swap(amt[i],amt[i+1]);
amt[i]++;
if(amt[i]>=a[i]){
cnt--;
}
amt[i+1]--;
}
}
deb(cnt);
if(cnt!=k){
cout<<-1<<"\n";
return 0;
}
for(int i=0;i<n;i++)
cout<<a[i]<<" \n"[i==n-1];
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
0 ms |
204 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
204 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
204 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
332 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
332 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
332 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
332 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
12 ms |
2112 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
23 ms |
3824 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
54 ms |
9064 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |