#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("inline")
#include<bits/stdc++.h>
using namespace std;
template < class S, class T> inline S divup_L( S a, T b) {
return ( a+ b- 1 ) / b;
}
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
class Solution{
public :
int minSpeedOnTime( vector< int > & D, double hour) {
int N = D.size ( ) ;
int res;
long long H = hour * 100 + 0.5 ;
long long take;
int Lj4PdHRW;
int KL2GvlyY;
int Q5VJL1cS;
Lj4PdHRW = 1 ;
KL2GvlyY = 1000000000 ;
while ( Lj4PdHRW < KL2GvlyY) {
int i;
if ( ( Lj4PdHRW + KL2GvlyY) % 2 == 0 ) {
Q5VJL1cS = ( Lj4PdHRW + KL2GvlyY) / 2 ;
}
else {
Q5VJL1cS = ( Lj4PdHRW + KL2GvlyY - 1 ) / 2 ;
}
take = 0 ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
take = ( ( divup_L( take,100 ) ) ) * 100 ;
take + = ( divup_L( ( 100LL * D[ i] ) ,Q5VJL1cS) ) ;
}
if ( take <= H) {
KL2GvlyY = Q5VJL1cS;
}
else {
Lj4PdHRW = Q5VJL1cS + 1 ;
}
}
res = KL2GvlyY;
if ( res== 1000000000 ) {
res = - 1 ;
}
return res;
}
}
;
// cLay version 20210524-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// class Solution {
// public:
// int minSpeedOnTime(vector<int>& D, double hour) {
// int N = D.size(), res;
// ll H = hour * 100 + 0.5, take;
// res = bsearch_min[int,s,1,1d9][
// take = 0;
// rep(i,N){
// take = (take /+ 100) * 100;
// take += (100LL * D[i]) /+ s;
// }
// ](take <= H);
// if(res==1d9) res = -1;
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk9mYXN0IikKI3ByYWdtYSBHQ0Mgb3B0aW1pemUoInVucm9sbC1sb29wcyIpCiNwcmFnbWEgR0NDIG9wdGltaXplKCJpbmxpbmUiKQojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0ZW1wbGF0ZTxjbGFzcyBTLCBjbGFzcyBUPiBpbmxpbmUgUyBkaXZ1cF9MKFMgYSwgVCBiKXsKICByZXR1cm4gKGErYi0xKS9iOwp9CiNkZWZpbmUgbWFpbiBkdW1teV9tYWluCmludCBtYWluKCl7CiAgcmV0dXJuIDA7Cn0KI3VuZGVmIG1haW4KY2xhc3MgU29sdXRpb257CiAgcHVibGljOgogIGludCBtaW5TcGVlZE9uVGltZSh2ZWN0b3I8aW50PiYgRCwgZG91YmxlIGhvdXIpewogICAgaW50IE4gPSBELnNpemUoKTsKICAgIGludCByZXM7CiAgICBsb25nIGxvbmcgSCA9IGhvdXIgKiAxMDAgKyAwLjU7CiAgICBsb25nIGxvbmcgdGFrZTsKICAgIGludCBMajRQZEhSVzsKICAgIGludCBLTDJHdmx5WTsKICAgIGludCBRNVZKTDFjUzsKICAgIExqNFBkSFJXID0gMTsKICAgIEtMMkd2bHlZID0gMTAwMDAwMDAwMDsKICAgIHdoaWxlKExqNFBkSFJXIDwgS0wyR3ZseVkpewogICAgICBpbnQgaTsKICAgICAgaWYoKExqNFBkSFJXICsgS0wyR3ZseVkpJTI9PTApewogICAgICAgIFE1VkpMMWNTID0gKExqNFBkSFJXICsgS0wyR3ZseVkpIC8gMjsKICAgICAgfQogICAgICBlbHNlewogICAgICAgIFE1VkpMMWNTID0gKExqNFBkSFJXICsgS0wyR3ZseVkgLSAxKSAvIDI7CiAgICAgIH0KICAgICAgdGFrZSA9IDA7CiAgICAgIGZvcihpPSgwKTtpPChOKTtpKyspewogICAgICAgIHRha2UgPSAoKGRpdnVwX0wodGFrZSwxMDApKSkgKiAxMDA7CiAgICAgICAgdGFrZSArPShkaXZ1cF9MKCgxMDBMTCAqIERbaV0pLFE1VkpMMWNTKSk7CiAgICAgIH0KICAgICAgaWYodGFrZSA8PSBIKXsKICAgICAgICBLTDJHdmx5WSA9IFE1VkpMMWNTOwogICAgICB9CiAgICAgIGVsc2V7CiAgICAgICAgTGo0UGRIUlcgPSBRNVZKTDFjUyArIDE7CiAgICAgIH0KICAgIH0KICAgIHJlcyA9S0wyR3ZseVk7CiAgICBpZihyZXM9PTEwMDAwMDAwMDApewogICAgICByZXMgPSAtMTsKICAgIH0KICAgIHJldHVybiByZXM7CiAgfQp9CjsKLy8gY0xheSB2ZXJzaW9uIDIwMjEwNTI0LTEKCi8vIC0tLSBvcmlnaW5hbCBjb2RlIC0tLQovLyAjZGVmaW5lIG1haW4gZHVtbXlfbWFpbgovLyB7fQovLyAjdW5kZWYgbWFpbgovLyAKLy8gY2xhc3MgU29sdXRpb24gewovLyBwdWJsaWM6Ci8vICAgaW50IG1pblNwZWVkT25UaW1lKHZlY3RvcjxpbnQ+JiBELCBkb3VibGUgaG91cikgewovLyAgICAgaW50IE4gPSBELnNpemUoKSwgcmVzOwovLyAgICAgbGwgSCA9IGhvdXIgKiAxMDAgKyAwLjUsIHRha2U7Ci8vICAgICByZXMgPSBic2VhcmNoX21pbltpbnQscywxLDFkOV1bCi8vICAgICAgIHRha2UgPSAwOwovLyAgICAgICByZXAoaSxOKXsKLy8gICAgICAgICB0YWtlID0gKHRha2UgLysgMTAwKSAqIDEwMDsKLy8gICAgICAgICB0YWtlICs9ICgxMDBMTCAqIERbaV0pIC8rIHM7Ci8vICAgICAgIH0KLy8gICAgIF0odGFrZSA8PSBIKTsKLy8gICAgIGlmKHJlcz09MWQ5KSByZXMgPSAtMTsKLy8gICAgIHJldHVybiByZXM7Ci8vICAgfQovLyB9Owo=