Pagini recente » Cod sursa (job #3135536) | Cod sursa (job #244830) | Cod sursa (job #487772) | Cod sursa (job #737040) | Cod sursa (job #325749)
Cod sursa(job #325749)
#include <algorithm>
#include <stdio.h>
#define MAX 100024
#define ll long long
using namespace std;
ll n, m, k, l, gs, fol;
ll lung[MAX];
inline void binSearch(int ind, ll fr, ll ls)
{
if (fr > ls)
return;
int med = (fr + ls) / 2;
if (fol - (lung[ind] / m + 1) + (lung[ind] / (ll) med + 1) <= k)
{
gs = med;
binSearch(ind, fr, med - 1);
}
else binSearch(ind, med + 1, ls);
}
int main()
{
freopen("progresii.in", "r", stdin);
freopen("progresii.out", "w", stdout);
scanf("%lld %lld %lld %lld", &n, &m, &k, &l);
for (ll i = 1; i <= n; i++)
{
ll start;
scanf("%lld", &start);
lung[i] = l - start;
fol += lung[i] / m + 1;
}
for (ll i = 1; i <= n; i++)
{
binSearch(i, (ll) 1, m);
fol += (lung[i] / gs) - (lung[i] / m);
printf("%lld\n", gs);
}
fclose(stdin);
fclose(stdout);
return 0;
}