Cod sursa(job #360635)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 1 noiembrie 2009 13:27:05
Problema Progresii Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#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;}
     printf("%ld\n",ult);
     sumus+=((l-a[i])/ult+1);}
 return 0;
}