看不出来了……
#include <bits/stdc++.h>
using namespace std;
int a[50], h[205], f[1005], ans;
int main(){
for (int i = 1; i <= 4; ++ i)
scanf ("%d", &a[i]);
for (int i = 1; i <= 4; ++ i){
int n = a[i], sum = 0;
memset (f, 0, sizeof (f));
for (int j = 1; j <= n; ++ j){
scanf ("%d", &h[j]);
sum += h[j];
}
for (int j = 1; j <= n; ++ j)
for (int k = sum / 2; k >= h[i]; -- k)
f[k] = max(f[k], f[k - h[j]] + h[j]);
ans += max(f[sum / 2], sum - f[sum / 2]);
}
printf ("%d\n", ans);
return 0;
}