#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* #include #include #include #include #include #include #include */ #define PB push_back #define ALL(x) (x).begin(),(x).end() #define SZ(x) ((int)(x).size()) #define REP(i, n) for(int i=0; i=0; --i) #define FOR(i, b, e) for(typeof(e) i=b; i!=e; ++i) using namespace std; //using namespace tr1; typedef long long LL; typedef vector VI; typedef vector VVI; typedef vector VS; typedef istringstream ISS; int ntypes; map tind; VVI tprice; VVI tqual; bool ispos(int b, int q) { REP(i, ntypes) { int cheapest=1234567890; REP(j, SZ(tprice[i])) if(tqual[i][j]>=q) cheapest=min(cheapest,tprice[i][j]); b-=cheapest; if(b<0) return false; } return true; } void go() { tind.clear(); tprice.clear(); tqual.clear(); int N, b; cin >> N >> b; ntypes=0; REP(i, N) { string t, c; int p,q; cin >> t >> c >> p >> q; if(!tind.count(t)) {tind[t]=ntypes++; tprice.PB(VI(0)); tqual.PB(VI(0));} int ind=tind[t]; tprice[ind].PB(p); tqual[ind].PB(q); } int left=0, right=1000000000; while(left