Pagini recente » Cod sursa (job #2152821) | Cod sursa (job #3269845) | Cod sursa (job #908891) | Cod sursa (job #111324) | Cod sursa (job #581025)
Cod sursa(job #581025)
# include <cstdio>
typedef long long ll ;
const char *FIN = "progresii.in", *FOU = "progresii.out" ;
ll L, K, sol ;
int N, M, P[100005] ;
void cb ( int X ) {
int cnt = 0; ll ii = 0 ;
for ( cnt = 1 << 30, ii = 0; cnt ; cnt >>= 1 ) {
if ( ii + cnt <= M && sol + X / (cnt + ii) >= K ) {
ii += cnt ;
}
}
sol += X / (cnt + ii + 1) + 1 ;
printf ( "%lld\n", ii + 1 ) ;
}
int main ( void ) {
freopen ( FIN, "r", stdin ) ;
scanf ( "%d %d %lld %lld", &N, &M, &K, &L ) ;
for ( int i = 1; i <= N; ++i ) {
scanf ( "%d", P + i ), P[i] = L - P[i] ;
sol += P[i] / M + 1 ;
}
if ( sol - K > 0 ) {
fprintf ( fopen ( FOU, "w" ) , "-1" ) ;
} else {
freopen ( FOU, "w", stdout ) ;
for ( int i = 1; i <= N; ++i ) {
sol -= P[i] / M + 1, cb ( P[i] ) ;
}
}
}