Pagini recente » Cod sursa (job #2699861) | Cod sursa (job #823787) | Cod sursa (job #1877535) | Cod sursa (job #1034045) | Cod sursa (job #984497)
Cod sursa(job #984497)
#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 = left + ((right-left)>>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;
}