#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("inline")
#include<bits/stdc++.h>
using namespace std;
template < class T, class S> inline T RoundUp( T a, S b) {
T m;
if ( b < 0 ) {
b = - b;
}
if ( b <= 1 ) {
return a;
}
m = a % b;
if ( m == 0 ) {
return a;
}
if ( m < 0 ) {
m + = b;
}
return ( ( a + b - m) / b) * b;
}
template < class S, class T> inline S chmin( S & a, T b) {
if ( a> b) {
a= b;
}
return a;
}
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
long long dp[ 1001 ] [ 1001 ] ;
class Solution{
public :
int minSkips( vector< int > & dist, int speed, int hoursBefore) {
int i;
int N = dist.size ( ) ;
for ( i= ( 0 ) ; i< ( N+ 1 ) ; i++ ) {
int j;
for ( j= ( 0 ) ; j< ( N+ 1 ) ; j++ ) {
dp[ i] [ j] = 4611686016279904256LL;
}
}
dp[ 0 ] [ 0 ] = 0 ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
int j;
for ( j= ( 0 ) ; j< ( N+ 1 ) ; j++ ) {
if ( dp[ i] [ j] < 4611686016279904256LL) {
chmin( dp[ i+ 1 ] [ j] , RoundUp( dp[ i] [ j] , speed) + dist[ i] ) ;
chmin( dp[ i+ 1 ] [ j+ 1 ] , dp[ i] [ j] + dist[ i] ) ;
}
}
}
for ( i= ( 0 ) ; i< ( N+ 1 ) ; i++ ) {
if ( dp[ N] [ i] <= ( long long ) speed * hoursBefore) {
return i;
}
}
return - 1 ;
}
}
;
// cLay version 20210607-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// ll dp[1001][1001];
//
// class Solution {
// public:
// int minSkips(vector<int>& dist, int speed, int hoursBefore) {
// int N = dist.size();
//
// rep(i,N+1) rep(j,N+1) dp[i][j] = ll_inf;
// dp[0][0] = 0;
//
// rep(i,N) rep(j,N+1) if(dp[i][j] < ll_inf){
// dp[i+1][j] <?= RoundUp(dp[i][j], speed) + dist[i];
// dp[i+1][j+1] <?= dp[i][j] + dist[i];
// }
// rep(i,N+1) if(dp[N][i] <= (ll)speed * hoursBefore) return i;
// return -1;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk9mYXN0IikKI3ByYWdtYSBHQ0Mgb3B0aW1pemUoInVucm9sbC1sb29wcyIpCiNwcmFnbWEgR0NDIG9wdGltaXplKCJpbmxpbmUiKQojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBTPiBpbmxpbmUgVCBSb3VuZFVwKFQgYSwgUyBiKXsKICBUIG07CiAgaWYoYiA8IDApewogICAgYiA9IC1iOwogIH0KICBpZihiIDw9IDEpewogICAgcmV0dXJuIGE7CiAgfQogIG0gPSBhICUgYjsKICBpZihtID09IDApewogICAgcmV0dXJuIGE7CiAgfQogIGlmKG0gPCAwKXsKICAgIG0gKz0gYjsKICB9CiAgcmV0dXJuICgoYSArIGIgLSBtKSAvIGIpICogYjsKfQp0ZW1wbGF0ZTxjbGFzcyBTLCBjbGFzcyBUPiBpbmxpbmUgUyBjaG1pbihTICZhLCBUIGIpewogIGlmKGE+Yil7CiAgICBhPWI7CiAgfQogIHJldHVybiBhOwp9CiNkZWZpbmUgbWFpbiBkdW1teV9tYWluCmludCBtYWluKCl7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KbG9uZyBsb25nIGRwWzEwMDFdWzEwMDFdOwpjbGFzcyBTb2x1dGlvbnsKICBwdWJsaWM6CiAgaW50IG1pblNraXBzKHZlY3RvcjxpbnQ+JiBkaXN0LCBpbnQgc3BlZWQsIGludCBob3Vyc0JlZm9yZSl7CiAgICBpbnQgaTsKICAgIGludCBOID0gZGlzdC5zaXplKCk7CiAgICBmb3IoaT0oMCk7aTwoTisxKTtpKyspewogICAgICBpbnQgajsKICAgICAgZm9yKGo9KDApO2o8KE4rMSk7aisrKXsKICAgICAgICBkcFtpXVtqXSA9IDQ2MTE2ODYwMTYyNzk5MDQyNTZMTDsKICAgICAgfQogICAgfQogICAgZHBbMF1bMF0gPSAwOwogICAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICAgIGludCBqOwogICAgICBmb3Ioaj0oMCk7ajwoTisxKTtqKyspewogICAgICAgIGlmKGRwW2ldW2pdIDwgNDYxMTY4NjAxNjI3OTkwNDI1NkxMKXsKICAgICAgICAgIGNobWluKGRwW2krMV1bal0sIFJvdW5kVXAoZHBbaV1bal0sIHNwZWVkKSArIGRpc3RbaV0pOwogICAgICAgICAgY2htaW4oZHBbaSsxXVtqKzFdLCBkcFtpXVtqXSArIGRpc3RbaV0pOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgZm9yKGk9KDApO2k8KE4rMSk7aSsrKXsKICAgICAgaWYoZHBbTl1baV0gPD0gKGxvbmcgbG9uZylzcGVlZCAqIGhvdXJzQmVmb3JlKXsKICAgICAgICByZXR1cm4gaTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIC0xOwogIH0KfQo7Ci8vIGNMYXkgdmVyc2lvbiAyMDIxMDYwNy0xCgovLyAtLS0gb3JpZ2luYWwgY29kZSAtLS0KLy8gI2RlZmluZSBtYWluIGR1bW15X21haW4KLy8ge30KLy8gI3VuZGVmIG1haW4KLy8gCi8vIGxsIGRwWzEwMDFdWzEwMDFdOwovLyAKLy8gY2xhc3MgU29sdXRpb24gewovLyBwdWJsaWM6Ci8vICAgaW50IG1pblNraXBzKHZlY3RvcjxpbnQ+JiBkaXN0LCBpbnQgc3BlZWQsIGludCBob3Vyc0JlZm9yZSkgewovLyAgICAgaW50IE4gPSBkaXN0LnNpemUoKTsKLy8gCi8vICAgICByZXAoaSxOKzEpIHJlcChqLE4rMSkgZHBbaV1bal0gPSBsbF9pbmY7Ci8vICAgICBkcFswXVswXSA9IDA7Ci8vIAovLyAgICAgcmVwKGksTikgcmVwKGosTisxKSBpZihkcFtpXVtqXSA8IGxsX2luZil7Ci8vICAgICAgIGRwW2krMV1bal0gPD89IFJvdW5kVXAoZHBbaV1bal0sIHNwZWVkKSArIGRpc3RbaV07Ci8vICAgICAgIGRwW2krMV1baisxXSA8Pz0gZHBbaV1bal0gKyBkaXN0W2ldOwovLyAgICAgfQovLyAgICAgcmVwKGksTisxKSBpZihkcFtOXVtpXSA8PSAobGwpc3BlZWQgKiBob3Vyc0JlZm9yZSkgcmV0dXJuIGk7Ci8vICAgICByZXR1cm4gLTE7Ci8vICAgfQovLyB9Owo=