Pagini recente » Cod sursa (job #965344) | Cod sursa (job #1156392) | Cod sursa (job #1803109) | Cod sursa (job #1983908) | Cod sursa (job #189685)
Cod sursa(job #189685)
#include <stdio.h>
#define Nmax 200001
long v[Nmax];
long n,m;
long long k,l;
long S;
void scan()
{
freopen("progresii.in", "r", stdin);
freopen("progresii.out", "w",stdout);
scanf("%lld%lld%lld%lld", &n,&m,&k,&l);
for(int i=1;i<=n;++i)
{
scanf("%lld", &v[i]);
v[i]=l-v[i]+1;
S+=v[i]/m;
}
}
inline long long max(long long x,long long y)
{
if(x>y)
return x;
return y;
}
inline long long min(long long x,long long y)
{
if(x<y)
return x;
return y;
}
void solve()
{
if(S>k)
{
printf("-1\n");
return;
}
long long minv,kk;
for(int i=1;i<=n;++i)
{
S-=v[i]/m;
kk=k-S;
if(v[i]>kk)
{
if(kk)
minv=v[i]/kk;
else
minv=v[i]+1;
}
else
minv=(v[i]+1)/kk;
k-=v[i]/minv;
//printf("k=%d kk=%d s=%d min=%d v[i]=%d ",k,kk,S,minv,v[i]);
printf("%lld\n",minv);
}
}
int main()
{
scan();
solve();
return 0;
}