Pagini recente » Cod sursa (job #1414148) | Cod sursa (job #522396) | Cod sursa (job #1377193) | Cod sursa (job #1265162) | Cod sursa (job #165353)
Cod sursa(job #165353)
#include<stdio.h>
long long p,u,mij,q,j,s,n,m,k,l,i,x,y,t,spm,pm,vv;
long long v[100101];
int main(){
FILE *f=fopen("progresii.in","r");
fscanf(f,"%lld %lld %lld %lld",&n,&m,&k,&l);
for(i=1;i<=n;i++){
fscanf(f,"%lld",&x);
v[i]=l-x;
pm = 1+v[i]/m;
spm+=pm;
}
FILE *g = fopen("progresii.out","w");
if (spm<=k) {
//caut cea mai mica valoare t ai t<=m spm-(1+v[i]/t)<=k-(1+v[i]/m)
for (i=1;i<=n;i++) {
//caut t
vv = spm-(1+v[i]/m);
p=1;u=m;
while (p<=u) {
mij=(p+u)/2;
if (vv>k-(1+v[i]/mij)) {
p=mij+1;
} else u=mij-1;
}
t=p;
fprintf(g,"%lld\n",t);
spm-=(1+v[i]/m);
k-=(1+v[i]/t);
}
} else
fprintf(g,"-1");
fclose(g);
fclose(f);
return 0;
}