Pagini recente » Cod sursa (job #2072572) | Cod sursa (job #524248) | Cod sursa (job #2890620) | Cod sursa (job #53441) | Cod sursa (job #984492)
Cod sursa(job #984492)
#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 ){
long long sol = 0;
if ( k-needed[i+1]-1 == 0 ){
sol = l-p[i]+1;
}
else{
sol = (l-p[i])/(k-needed[i+1]-1);
if ( !sol || k - ((l-p[i])/sol + 1) < needed[i+1] ){
++sol;
}
if ( sol > 1 && k - ((l-p[i])/(sol-1) + 1) >= needed[i+1] ){
--sol;
}
}
fprintf(g,"%d\n",sol);
k -= ((l-p[i])/sol + 1);
}
fclose(f);
fclose(g);
return 0;
}