Pagini recente » Cod sursa (job #506294) | Cod sursa (job #640264) | Cod sursa (job #787905) | Borderou de evaluare (job #1129110) | Cod sursa (job #2656410)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("progresii.in");
ofstream fout("progresii.out");
const int nmax = 100005;
int n;
long long m, k, l, v[nmax], cost;
int main(){
fin >> n >> m >> k >> l;
for (int i = 1; i <= n; ++i){
fin >> v[i];
cost = 1LL * cost + 1 + 1LL * (l - v[i]) / m;
if (cost > k){
fout << -1;
return 0;
}
}
for (int i = 1; i <= n; ++i){
cost = 1LL * cost - (1 + 1LL * (l - v[i]) / m);
long long b = k - cost - 1;
long long a = l - v[i];
long long x;
if (b == 0){
x = a + 1;
}
else{
long long st = 1, dr = m;
while (st <= dr){
long long mid = (st + dr) / 2;
if (1LL * cost + 1 + 1LL * (l - v[i]) / mid <= k){
x = mid;
dr = mid - 1;
}
else{
st = mid + 1;
}
}
}
cost = 1LL * cost + 1 + 1LL * (l - v[i]) / x;
fout << x << "\n";
}
fin.close();
fout.close();
return 0;
}