Cod sursa(job #252650)

Utilizator albuaAlbu Alexandru albua Data 4 februarie 2009 19:35:49
Problema Progresii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>
#define DMax 100009

long a[DMax],sum[DMax],val[DMax];
long n,m,k,l,i,in,st,mij;

void citire();

int main()
{
	freopen("progresii.in","r",stdin);
	freopen("progresii.out","w",stdout);
	citire();
	for(i=1;i<=n;i++)
		{
			in=1;
			st=m;
			while(in<=st)
				{
					mij=(in+st)/2;
					if((k-((l+1-a[i])/mij)) >= sum[i+1]) st=mij-1;
					else in=mij+1;
				}		
			val[i]=in;
			k=k-((l+1-a[i])/val[i]);
		}
  for(i=1;i<=n;i++) printf("%ld\n",val[i]);
  return 0;
}

void citire()
{
	long i;
  scanf("%ld %ld %ld %ld\n",&n,&m,&k,&l);
	for(i=1;i<=n;i++)
		  scanf("%ld\n",&a[i]);
	sum[n]=(l+1-a[n])/m;
	for(i=n-1;i>=1;i--)
		sum[i]=sum[i+1]+(l+1-a[i])/m;
}