Pagini recente » Cod sursa (job #779208) | Cod sursa (job #894378) | Cod sursa (job #60225) | Cod sursa (job #2956905) | Cod sursa (job #1847794)
#include <fstream>
#include <iostream>
#define DIM 100010
using namespace std;
ifstream fin ("progresii.in");
ofstream fout("progresii.out");
long long N, M, K, L, x[DIM], t;
long long Min[DIM], S[DIM], sol[DIM];
long seconds(long long dist, long long pas) {
return 1 + dist/pas;
}
int main () {
ifstream fin ("progresii.in");
ofstream fout("progresii.out");
fin>>N>>M>>K>>L;
for (int i=1;i<=N;i++) {
fin>>x[i];
Min[i] = seconds(L-x[i], M);
S[i] = S[i-1] + Min[i];
//cout<<Min[i]<<" ";
}
for (int i=1;i<=N;i++) {
int st = 1;
int dr = M;
while (st <= dr) {
int mid = (st + dr)/2;
if (seconds(L-x[i], mid) + S[N] - S[i] <= K)
dr = mid-1;
else
st = mid+1;
}
sol[i] = st;
if (st > M) {
fout<<-1;
return 0;
}
K-=seconds(L-x[i], st);
}
for (int i=1;i<=N;i++)
fout<<sol[i]<<"\n";
return 0;
}