Pagini recente » Cod sursa (job #2798095) | infoarena - comunitate informatica, concursuri de programare | Cod sursa (job #68884) | Cod sursa (job #1961504) | Cod sursa (job #360644)
Cod sursa(job #360644)
#include<stdio.h>
long n,m,k,l,i,a[100050],s[100050],sumus,st,dr,mid,sum,ult;
int main()
{
freopen("progresii.in","r",stdin);
freopen("progresii.out","w",stdout);
scanf("%ld%ld%ld%ld",&n,&m,&k,&l);
for(i=1;i<=n;++i)
{scanf("%ld",&a[i]);
s[i]=s[i-1]+1+(l-a[i])/m;}
sumus=0;
for(i=1;i<=n;++i)
{
st=1;
dr=m;
while(st<=dr)
{mid=st+dr;
mid/=2;
sum=s[n]-s[i-1]+sumus-(l-a[i])/m;
sum+=((l-a[i])/mid);
if(sum>k)st=mid+1;
else dr=mid-1,ult=mid;}
if(!ult){printf("-1");return 0;}
printf("%ld\n",ult);
sumus+=((l-a[i])/ult+1);}
return 0;
}