Cod sursa(job #465534)

Utilizator wefgefAndrei 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();
}