Pagini recente » Cod sursa (job #804339) | Cod sursa (job #1919518) | Cod sursa (job #2477837) | Cod sursa (job #1090376) | Cod sursa (job #162074)
Cod sursa(job #162074)
#include <stdio.h>
#define ll long long
int N, M, P[100005], sol[100005];
ll K, X, last[100005], st;
int main(void)
{
int i, j, l, r, m;
freopen("progresii.in", "r", stdin);
freopen("progresii.out", "w", stdout);
scanf("%d %d %lld %lld", &N, &M, &K, &X);
for (i = 1; i <= N; ++i)
scanf("%d", &P[i]);
for (i = N; i; --i)
last[i] = last[i+1] + (X >= P[i] ? 1+(X-P[i])/M : 0);
for (i = 1; i <= N; ++i)
{
for (l = 1, r = M, j = -1; l <= r; )
{
m = (l + r) / 2;
if (st + last[i+1] + (X >= P[i] ? 1+(X-P[i])/m : 0) <= K)
j = m, r = m-1;
else
l = m+1;
}
if (j == -1)
{
printf("-1\n");
return 0;
}
sol[i] = j;
st += (X >= P[i] ? 1+(X-P[i])/j : 0);
}
for (i = 1; i <= N; ++i)
printf("%d\n", sol[i]);
return 0;
}