Pagini recente » Cod sursa (job #1741119) | Cod sursa (job #1194670) | Cod sursa (job #2555851) | Cod sursa (job #2092275) | Cod sursa (job #581028)
Cod sursa(job #581028)
# 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) + 1 ;
printf ( "%lld\n", ii + 1 ) ;
}
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] ) ;
}
}
}