https://atcoder.jp/contests/abc373/submissions/58239035
#include<bits/stdc++.h>
#define pb push_back
#define int long long
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se second
using namespace std;
const int N=2e5+5;
struct node{
int x,id;
}a[N];
bool cmp(node x,node y){
return x.x>y.x;
}
int ans[N];
signed main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n,m,k;
cin>>n>>m>>k;
int sum=0;
for (int i=1;i<=n;i++) cin>>a[i].x,a[i].id=i,sum+=a[i].x;
if (m==n){
for (int i=1;i<=n;i++) cout<<0<<' ';
return 0;
}
int la=k-sum;
sort(a+1,a+n+1,cmp);
int sma=a[m+1].x;
int cnt=0;
for (int i=1;i<=m;i++){
cnt+=a[i].x;
}
for (int i=1;i<=n;i++){
if (i<=m){
if ((a[i].x+1)*m>(cnt-a[i].x+sma+la)){
ans[a[i].id]=0;
continue;
}
int Ans=((cnt-a[i].x+sma+la-m-m*a[i].x+1ll+m)/(m+1ll));
// int Ans=(int)(ceil((cnt-a[i].x+sma+la-m-m*a[i].x+1)*1.0/(m+1)));
ans[a[i].id]=(Ans>la?-1:Ans);
}
else{
if ((a[i].x+1)*m>(cnt+la)){
ans[a[i].id]=0;
continue;
}
// cout<<"!!! "<<(cnt+la+1)*1.0/m<<endl;
int Ans=(cnt+la-m-m*a[i].x+1ll+m)/(m+1ll);
// int Ans=(int)(ceil((cnt+la-m-m*a[i].x+1)*1.0/(m+1)));
ans[a[i].id]=(Ans>la?-1ll:Ans);
}
}
for (int i=1;i<=n;i++) cout<<ans[i]<<" \n"[i==n];
return 0;
}