Pagini recente » Cod sursa (job #1036411) | Cod sursa (job #919334) | Cod sursa (job #37894) | Cod sursa (job #752427) | Cod sursa (job #983829)
Cod sursa(job #983829)
#include<stdio.h>
#define maxdim 100005
FILE*f=fopen("progresii.in","r");
FILE*g=fopen("progresii.out","w");
int n,m;
int p[maxdim];
long long k,l;
long long needed[maxdim];
int main () {
fscanf(f,"%d %d %lld %lld",&n,&m,&k,&l);
for ( int i = 1 ; i <= n ; ++i ){
fscanf(f,"%d",&p[i]);
}
for ( int i = n ; i >= 1 ; --i ){
needed[i] = needed[i+1] + (l-p[i])/m + 1;
}
if ( needed[1] > k ){
fprintf(g,"-1\n");
fclose(f); fclose(g);
return 0;
}
for ( int i = 1 ; i <= n ; ++i ){
int left = 1,middle,right = m;
while ( left <= right ){
middle = (1LL*left+right)>>1;
if ( (l-p[i])/middle+1+needed[i+1] <= k ){
right = middle-1;
}
else{
left = middle+1;
}
}
fprintf(g,"%d\n",left);
k -= ((l-p[i])/left + 1);
}
fclose(f);
fclose(g);
return 0;
}