Pagini recente » Cod sursa (job #2052030) | Cod sursa (job #845034) | Profil dornescuvlad | Cod sursa (job #244482) | Cod sursa (job #253044)
Cod sursa(job #253044)
#include <stdio.h>
#define DMax 100009
long a[DMax];
long n,m,i,in,st,mij;
long long l,k,val[DMax],suma,sum[DMax];
void citire();
int main()
{
freopen("progresii.in","r",stdin);
freopen("progresii.out","w",stdout);
citire();
for(i=1;i<=n;i++)
{
//cautarea binara
in=1; st=m;
while(in<=st)
{
mij=in+(st-in)/2;
if((1+(l-a[i])/mij) <=(suma+sum[i])) {st=mij-1; val[i]=mij;}
else in=mij+1;
}
//cautarea binara
if(val[0]==0) {printf("-1\n"); return 0;}
suma=suma-((l-a[i]) / val[i] +1)+sum[i];
}
for(i=1;i<=n;i++) printf("%lld\n",val[i]);
return 0;
}
void citire()
{
long i;
scanf("%ld %ld %lld %lld\n",&n,&m,&k,&l);
for(i=1;i<=n;i++)
scanf("%ld\n",&a[i]);
for(i=1;i<=n;i++)
{
sum[i]=1+(l-a[i])/m;
suma+=sum[i];
}
suma=k-suma;
}