Cod sursa(job #164202)

Utilizator razvi9Jurca Razvan razvi9 Data 23 martie 2008 17:42:50
Problema Progresii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<cstdio>
long long n,i,a[100001],m,l,k,v[100001],t;
int main()
{
	freopen("progresii.in","r",stdin);
	freopen("progresii.out","w",stdout);
	scanf("%lld %lld %lld %lld",&n,&m,&k,&l);
	for(i=1;i<=n;i++){
		scanf("%lld",&a[i]);
		a[i]=l-a[i];
		t=t+a[i]+1;
		v[i]=1;}
	i=n;
	while(t>k && i>0){
		v[i]=m;
		t=t-a[i]+a[i]/m;	
		while(v[i]!=1 && a[i]/(v[i]-1)==a[i]/m) v[i]--;
		if(t<k){
			t=t+a[i]-a[i]/m;
			while(v[i]!=1 && t-a[i]+a[i]/(v[i]-1)<=k) v[i]--;
			t=t-a[i]+a[i]/v[i];}
		i--;}
	if(t>k){
		printf("-1\n");
		goto end;}
	for(i=1;i<=n;i++)
		printf("%lld\n",v[i]);
end:
	fclose(stdout);
	return 0;
}