#include<cstdio>#include<algorithm>#include<queue>#define M 10005usingnamespace std;struct gas
{int dis;//注意这里的距离是距终点的距离int fule;};boolcmp(gas A, gas B){return A.dis < B.dis;}
gas a[M];
priority_queue<int> que;int N, L, P;intmain(){scanf("%d",&N);for(int i =0; i < N; i++)scanf("%d %d",&a[i].dis,&a[i].fule);scanf("%d %d",&L,&P);for(int i =0; i < N; i++)
a[i].dis = L - a[i].dis;sort(a, a + N, cmp);
a[N].dis = L;
a[N].fule =0;
N++;//绝对不能少,不然会WAint count =0, position =0, tank = P;for(int i =0; i < N; i++){int d = a[i].dis - position;while(tank - d <0){if(que.empty()){puts("-1");return0;}
tank = tank + que.top();
que.pop();
count++;}
tank = tank - d;
position = a[i].dis;
que.push(a[i].fule);//把走过的加油站放进优先队列等没油之后,//优先加经过的油最多的加油站}printf("%d\n", count);return0;}