#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
ios::sync_with_stdio(0);
int t;
cin>>t;
while(t--){
int sum,n;
cin>>sum>>n;
vector<int> coin(n+1);
for(int i=1;i<=n;i++)
cin>>coin[i];
int money,index;
vector<vector<int> > d(102,vector<int>(20001,10001));
for(int i=0;i<n;i++)
d[i][0]=0;
for(int i=1;i<=n;i++){
for(int j=1;j<20001;j++){
if(coin[i]<=j)
d[i][j]=min(d[i-1][j],1+d[i-1][j-coin[i]]);
else
d[i][j]=d[i-1][j];
}
}
for(int i=sum;i<20001;i++){
index=d[n][i];
money=i;
if(index!=10001)
break;
}
cout<<money<<' '<<index<<endl;
}
return 0;
}
#include <vector>
#include <algorithm>
using namespace std;
int main(){
ios::sync_with_stdio(0);
int t;
cin>>t;
while(t--){
int sum,n;
cin>>sum>>n;
vector<int> coin(n+1);
for(int i=1;i<=n;i++)
cin>>coin[i];
int money,index;
vector<vector<int> > d(102,vector<int>(20001,10001));
for(int i=0;i<n;i++)
d[i][0]=0;
for(int i=1;i<=n;i++){
for(int j=1;j<20001;j++){
if(coin[i]<=j)
d[i][j]=min(d[i-1][j],1+d[i-1][j-coin[i]]);
else
d[i][j]=d[i-1][j];
}
}
for(int i=sum;i<20001;i++){
index=d[n][i];
money=i;
if(index!=10001)
break;
}
cout<<money<<' '<<index<<endl;
}
return 0;
}
Comments
Post a Comment