#include <bits/stdc++.h>
using namespace std;

int main()
{
   int a,b,c,d;
   cin>>a>>b>>c>>d;

   if(b>=(d*c))
   cout<<(-1);
   else
   {  long long int n=0;
       while((a+(n*b))>(d*n*c))
       {
           n++;
       }
       cout<<n;
   }

   

   
  



}

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
 
#define F first
#define S second
#define PB push_back
#define MP make_pair
#define REP(i,a,b) for (int i = a; i <= b; i++)
#define ALL(c) c.begin(), c.end()
#define TR(c, it) for (auto it = c.begin(); it != c.end(); it++)
#define SZ(c) int(c.size())
#define present(c, e) (c.find(e) != c.end())
#define cpresent(c, e) (find(ALL(c),e) != c.end())
#define ffasstt() ios_base::sync_with_stdio(0); cin.tie(0)
#define ll long long
#define pii(T) pair<T, T>
#define v1(T) vector<T>
#define v2(T) vector< vector<T> >
#define ordered_set tree<ll, null_type,less<ll>, rb_tree_tag,tree_order_statistics_node_update>
template<class T> void inline Scan(v1(T) &arr){ for(auto &i:arr) cin >> i; }
template<class T> void inline Print(v1(T) &arr){ for(auto &i:arr) cout << fixed << setprecision(7) << i << " "; }

void solve(){
    int a, b, c, d;
    cin >> a >> b >> c >> d;
    if(d * c - b <= 0){
        cout << -1;
        return;
    }
    cout << (int)ceil( (float) a / (float)(d * c - b));
}
int main()
{
    ffasstt();
    int t = 1;
    // cin >> t;
    while(t--){ 
        solve();
    }
    cerr<<"time taken : "<<(float)clock()/CLOCKS_PER_SEC <<" secs"<<endl;
    return 0;
}