Pagini recente » Cod sursa (job #2119984) | Cod sursa (job #2013597) | Cod sursa (job #1688745) | Cod sursa (job #1435869) | Cod sursa (job #1953882)
#include <cstdio>
using namespace std;
const int nmax=100003;
int p[nmax],rez[nmax];
int n,m;
long long k,l;
long long x[nmax];
long long time(long long pos,long long speed)
{
long long ans=0;
ans=(l-pos)/speed;
if((l-pos)%speed==0) ++ans;
return ans;
}
int main()
{
freopen ("progresii.in","r",stdin);
freopen ("progresii.out","w",stdout);
scanf("%d%d%lld%lld",&n,&m,&k,&l);
for(int i=1;i<=n;i++) scanf("%d",&p[i]);
for(int i=n;i>=1;i--)
{
x[i]=time(1LL*p[i],1LL*m);
x[i]+=x[i+1];
}
if(x[1]>k)
{
printf("-1\n");
return 0;
}
for(int i=1;i<=n;i++)
{
int st=1,dr=m,rasp=0;
while(st<=dr)
{
int mij=(st+dr)/2;
long long v=time(1LL*p[i],1LL*mij);
if(v+x[i+1]<=k)
{
rasp=mij;
dr=mij-1;
}
else st=mij+1;
}
k-=time(p[i],rasp);
printf("%d\n",rasp);
}
}