Pagini recente » Cod sursa (job #1719266) | Cod sursa (job #1738172) | Cod sursa (job #1884124) | Cod sursa (job #2681479) | Cod sursa (job #581034)
Cod sursa(job #581034)
# include <cstdio>
typedef long long ll ;
const char *FIN = "progresii.in", *FOU = "progresii.out" ;
ll L, K, sol, N, M, P[100005] ;
void cb ( int X ) {
ll cnt = 0, 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 ;
printf ( "%lld\n", ii ) ;
}
int main ( void ) {
freopen ( FIN, "r", stdin ) ;
scanf ( "%lld %lld %lld %lld", &N, &M, &K, &L ) ;
for ( int i = 1; i <= N; ++i ) {
scanf ( "%lld", 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] ) ;
}
}
}