Pagini recente » Rezultatele filtrării | Rezultatele filtrării | Cod sursa (job #2986858) | Rezultatele filtrării | Cod sursa (job #1847799)
#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]<<" ";
}
if (S[N] > K) {
fout<<-1;
return 0;
}
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;
}
*/
long long maxAcceptedSeconds = K - (S[N]-S[i]);
sol[i] = 1 + (L-x[i])/maxAcceptedSeconds;
K-=seconds(L-x[i], sol[i]);
}
for (int i=1;i<=N;i++)
fout<<sol[i]<<"\n";
return 0;
}