Pagini recente » Cod sursa (job #2337341) | Cod sursa (job #1144900) | Cod sursa (job #1599405) | Cod sursa (job #53646) | Cod sursa (job #1338858)
#include <cstdio>
#define NMAX 100007
long long Sum, x, n, m, k, l;
long long Ans[NMAX], poz[NMAX];
int main(){
freopen("progresii.in","r",stdin);
freopen("progresii.out","w",stdout);
scanf("%lld %lld %lld %lld",&n, &m, &k, &l);
for(int i = 1; i <= n; ++i)
scanf("%lld", &poz[i]);
Sum = 0;
for(int i = 1; i <= n; ++i){
Ans[i] = m;
++Sum;
Sum += (l - poz[i]) / m;
}
if (Sum > k)
printf("-1\n");
else{
for(int i = 1; i <= n; ++i){
Sum -= ((l - poz[i]) / m + 1);
x = k - Sum;
if (l - poz[i] + 1 < x){
x = l - poz[i] + 1;
Ans[i] = 1;
}
else{
Ans[i] = (l - poz[i] + 1) / x;
if ((l - poz[i] + 1) % x != 0)
++Ans[i];
x = (l - poz[i] + 1) / Ans[i];
if ((l - poz[i] + 1) % Ans[i] != 0)
++x;
}
Sum += x;
}
for(int i = 1; i <= n; ++i)
printf("%lld\n", Ans[i]);
}
return 0;
}