Pagini recente » Cod sursa (job #3127329) | Cod sursa (job #3148277) | Cod sursa (job #664003) | Cod sursa (job #3126550) | Cod sursa (job #2116426)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("progresii.in");
ofstream fout("progresii.out");
long long n, m, k, l, d[100002], sp[100002], sol[100002];
long long bs(long long poz)
{
long long st=1, dr=m, mijl, total_consum;
while(st<=dr)
{
mijl=st+((dr-st)>>1);
total_consum=sp[poz+1]+d[poz]/mijl+1;
if(total_consum<=k) dr=mijl-1;
else st=mijl+1;
}
if(st>m)
{
fout<<-1<<'\n';
exit(0);
}
k-=(total_consum-sp[poz+1]);
return st;
}
int main()
{
long long i, q;
fin>>n>>m>>k>>l;
for(i=1; i<=n; i++)
{
fin>>d[i];
d[i]=l-d[i];
sp[i]=1+d[i]/m;
}
for(i=n-1; i>=1; i--)
sp[i]+=sp[i+1];
for(i=1; i<=n; i++)
{
q=bs(i);
sol[i]=q;
}
for(i=1; i<=n; i++)
fout<<sol[i]<<'\n';
return 0;
}