#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n, m, k, ans;
ll a[1005], b[1005], c[1005];
ll dp[200][200][200];
int main(){
cin >> n >> m >> k;
for (int i = 1;i <= n;++ i) cin >> a[i];
for (int i = 1;i <= m;++ i) cin >> b[i];
for (int i = 1;i <= k;++ i) cin >> c[i];
sort(a + 1,a + n + 1);
sort(b + 1,b + n + 1);
sort(c + 1,c + n + 1);
for (int i = 0;i <= n;++ i){
for (int j = 0;j <= m;++ j){
for (int t = 0;t <= k;++ t){
if (i & j)
dp[i][j][t] = max(dp[i][j][t], dp[i - 1][j - 1][t] + a[i] * b[j]);
if (i & t)
dp[i][j][t] = max(dp[i][j][t], dp[i - 1][j][t - 1] + a[i] * c[t]);
if (j & t)
dp[i][j][t] = max(dp[i][j][t], dp[i][j - 1][t - 1] + b[j] * c[t]);
ans = max(ans, dp[i][j][t]);
}
}
}
cout << ans;
return 0;
}
数组开大后
题面
A了