範例程式碼 uva10690
//uva10690
#include <bits/stdc++.h>
using namespace std;
#define maxn 10101
int main() {
int n, m;
while(cin >> n >> m){
int sum=0;
vector<int> a(n+m);
for(auto&e:a){
cin>>e;
sum+=e;
}
vector<bitset<maxn>> table(min(n, m)+1);
table[0][0]=true;
for(int i=0; i<a.size(); i++){
for(int j=table.size()-2;j>=0;--j){
table[j+1] |= table[j]<<(a[i]+50);
}
}
int Min=INT_MAX, Max=INT_MIN;
auto k = table.back();
for(int i=0;i<maxn;++i){
if(k[i]){
int tmp = i-50*table.size()+50;
int re = sum - tmp;
Min = min(Min, tmp*re);
Max = max(Max, tmp*re);
}
}
cout << Max << " " << Min << endl;
}
}