#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; template istream& operator >> (istream& is, vector& vec){for(T& val: vec) is >> val; return is;} template istream& operator , (istream& is, T& val){ return is >> val;} template ostream& operator << (ostream& os, const vector& vec){for(int i=0; i ostream& operator , (ostream& os, T& val){ return os << " " << val;} template ostream& operator >> (ostream& os, T& val){ return os << " " << val;} using namespace std; constexpr double EPS = 1e-7; int main(){ int n,l; cin >> n,l; vector x(n, 0); for(int i=1; i> x[i]; } vector g(n, 0); for(int i=n-1, sum=0; i>=0; i--){ sum += x[i]; g[i] = sum/1.0/(n-i); } vector s(n, 0); for(int i=n-2; i>=0; i--){ s[i] = 100 * (l - abs(x[i] - x[i+1])); if(s[i] < 100){ cout << -1 << endl; return 0; } } int ans = 0; for(int i=n-2; i>=0; i--){ if(( x[i] + EPS <= g[i+1]+0.5*l && g[i+1]+0.5*l <= x[i] + l - EPS ) && ( x[i+1] + EPS <= g[i+1]+0.5*l && g[i+1]+0.5*l <= x[i+1] + l - EPS ) ){ }else{ ans++; } } cout << ans << endl; return 0; }