求大神幫忙優化orz
#include<bits/stdc++.h>
using namespace std;
long long compute(long long a,long long b,long long x[],long long y[],long long sum1,long long sum2){
if(a<0 || b<x[a]){
return 0;
}else if(b>=sum1){
return sum2;
}else{
return max(compute(a-1,b-x[a],x,y,sum1-x[a],sum2-y[a])+y[a],compute(a-1,b,x,y,sum1-x[a],sum2-y[a]));
}
}
int main()
{
cin.sync_with_stdio(0);
cout.sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
long long a,b,m;
while(cin>>a){
if(a==0){
return 0;
}
long long x[a],y[a],sum1=0,sum2=0;
for(int i=0;i<a;i++){
cin>>x[i]>>y[i];
sum1+=x[i];
sum2+=y[i];
}
cin>>b;
for(int i=a-1;i>=0;i--){
for(int j=0;j<i;j++){
if(x[j]<x[j+1]){
m=x[j];
x[j]=x[j+1];
x[j+1]=m;
m=y[j];
y[j]=y[j+1];
y[j+1]=m;
}
}
}
cout<<compute(a-1,b,x,y,sum1,sum2)<<"\n";
}
return 0;
}