Pagini recente » Cod sursa (job #1939661) | Cod sursa (job #154173) | Cod sursa (job #1956832) | Cod sursa (job #2943594) | Cod sursa (job #465534)
Cod sursa(job #465534)
Utilizator |
Andrei Grigorean wefgef |
Data |
24 iunie 2010 17:27:05 |
Problema |
Prod |
Scor |
Ascuns |
Compilator |
cpp |
Status |
done |
Runda |
|
Marime |
1.05 kb |
#include <cassert>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
const int MAX_N = 100;
int n;
vector<int> v;
void read() {
assert(freopen("prod.in", "r", stdin) != NULL);
assert(freopen("prod.out", "w", stdout) != NULL);
for (int i = 1; i <= 9; ++i) {
int val;
assert(scanf("%d", &val) == 1);
n += val;
for (int j = 0; j < val; ++j)
v.push_back(i);
}
}
long long getVal(vector<int> &v) {
sort(v.begin(), v.end());
long long res = 0;
long long pow = 1;
for (int i = 0; i < (int)v.size(); ++i) {
res += pow * v[i];
pow *= 10;
}
return res;
}
void solve() {
long long best = 0;
for (int conf = 0; conf < (1 << n); ++conf) {
vector<int> v1;
vector<int> v2;
for (int i = 0; i < n; ++i)
if ((conf >> i) & 1)
v1.push_back(v[i]);
else
v2.push_back(v[i]);
long long val1 = getVal(v1);
long long val2 = getVal(v2);
if (val1 * val2 > best)
best = val1 * val2;
}
printf("%lld\n", best);
}
int main() {
read();
solve();
}