#include #include #include #include #include #include #include #define fi(m,n) for(unsigned i=m; i < n ;++i) #define fj(m,n) for(unsigned j=m; j < n ;++j) using namespace std; //ifstream fin("a.in"); #define fin cin typedef pair H; bool LH(const H &a,const H&b) { return a.second/a.first > b.second/b.first; } double solve(vector &w,unsigned W,unsigned &); int main() { int t,e=0; fin>>t; while(t--) { unsigned n; fin>>n; vector w(n); fi(0,n) { fin>>w[i].first>>w[i].second; } unsigned W,y; fin>>W; ++W; double r=solve(w,W,y); printf("Problem %d: %u seconds scheduled for $%.2f\n",++e,y,r); } } struct node { unsigned w,n; double limit,p; bool operator <(const node & a)const { return limit &w,unsigned W,const node &u) { unsigned i,q=u.w; double s=u.p; for(i=u.n; i &w,unsigned W,unsigned &ti) { double ma=0; sort(w.begin(),w.end(),LH); priority_queue qu; //queue qu; node u,v; u.n=0; u.w=0; u.p=0; u.limit=limit(w,W,u); qu.push(u); while(!qu.empty()) { u=qu.top(); //u=qu.front(); qu.pop(); if(u.n=ma) qu.push(v); if(v.w+w[u.n].first=ma) qu.push(v); } } else { if(ma