Pagini recente » Cod sursa (job #843843) | Cod sursa (job #2582385) | Cod sursa (job #1315653) | Cod sursa (job #843806) | Cod sursa (job #1483841)
#include <fstream>
using namespace std;
ifstream fin("progresii.in");
ofstream fout("progresii.out");
typedef long long i64;
const int nmax= 100000;
i64 p[nmax+1], s[nmax+2];
int main( ) {
i64 n, m, k, l, ok= 0;
fin>>n>>m>>k>>l;
for ( i64 i= 1; i<=n; ++i ) {
fin>>p[i];
ok= ok+(l-p[i])/m;
}
if ( ok>k ) {
fout<<"-1\n";
} else {
for ( i64 i= n; i>=1; --i ) {
s[i]= s[i+1]+(l-p[i])/m+1;
}
i64 m2;
for ( m2= 1; m2*2<=m; m2*= 2 ) ;
for ( i64 i= 1; i<=n; ++i ) {
int sol= m;
for ( i64 step= m2; step>0; step/= 2 ) {
if ( sol-step>=1 && (l-p[i])/(sol-step)+1<=k-s[i+1] ) {
sol-= step;
}
}
k= k-(l-p[i])/sol-1;
fout<<sol<<"\n";
}
}
return 0;
}