数据太弱,dfs水过。。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
#include <map>
#include <queue>
#include <ctime>
#include <set>
#define ll long long
#define MK make_pair
#define PB push_back
#define SZ(x) ((int)(x).size())
#define FOR(it,c) for ( __typeof((c).begin()) it=(c).begin(); it!=(c).end(); it++ )
using namespace std;
int n,m,a[15],b[15],ans;
bool vis[15];
void dfs(int d,int mon){
if(mon<=0){
if(ans==-1||ans>d) ans=d;
return;
}
for(int i=0;i<n;i++){
if(vis[i]) continue;
vis[i]=true;
if(mon<=b[i]) dfs(d+1,mon-2*a[i]);
else dfs(d+1,mon-a[i]);
vis[i]=false;
}
}
int main(){
#ifndef ONLINE_JUDGE
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
#endif
while(cin>>n>>m){
for(int i=0;i<n;i++) cin>>a[i]>>b[i];
ans=-1;
dfs(0,m);
cout<<ans<<endl;
}
return 0;
}