#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <cmath>
#include <climits>
#include <vector>
#include <sstream>
#include <cstring>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <unordered_map>
#include <unordered_set>
#include <string.h>
#include <assert.h>
#include <iomanip>
#include <bitset>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define ordered_set tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>
#define int long long
#define ull unsigned long long
#define F first
#define S second
#define nl "\n"
#define ld long double
#define sortv(v) sort(v.begin(),v.end())
#define rsortv(v) sort(v.rbegin(),v.rend())
#define all(v) v.begin(),v.end()
#define div 1000000007
#define div2 998244353
#define PI 3.141592653589793
#define inf 1000000000000000000LL
#define blk 320
#define pb push_back


void solve()
{
    int a,b,c,d;cin>>a>>b>>c>>d;
    if(d*c-b<=0)
    {
        cout<<-1;
        return;
    }
    int x=d*c-b;
    int ans=(a+x-1)/x;
    cout<<ans;
}

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);cout.tie(NULL);
    #ifndef ONLINE_JUDGE
        freopen("input.txt","r",stdin);
        freopen("output.txt","w",stdout);
    #endif
        int t=1;
        //cin>>t;
        while(t--)
        {
            solve();
        }
}


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

int main()
{ 
#ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
 #endif 

  double n,x,y;
  cin>>n>>x>>y;

  double maxi=INT_MAX;
  while(n--)
  {
     
     double u,i;
     cin>>u>>i;
     maxi=min(maxi,x*((y-i)/(x-u)));

  }
  
  if((y-maxi)<0)
  cout<<0.0<<"\n";
 else
  cout<<y-maxi<<"\n";
}