Cod sursa(job #1887471)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 21 februarie 2017 16:51:10
Problema Prod Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>

using namespace std;

ifstream fin ("prod.in");
ofstream fout ("prod.out");

const int N = 1010;

int n, i, j, x[10], v[2][N], a[N], b[N], c[2 * N], t;

int main() {
    for (i = 1; i <= 9; ++i) {
        fin >> x[i];
    }
    for (i = 9 ; i > 0; --i) {
        for (j = 1 ; j <= x[i]; j++, t^=1) {
            v[t][++v[t][0]] = i;
        }

        if (v[0][0] > v[1][0]) {
            for(i = i - 1; !x[i] && i > 0; --i);
            if (!i) {
                break;
            }
            v[1][++v[1][0]] = i;
            x[i]--;
            i++;
        }
    }
    a[0] = v[0][0];
    for (i = a[0]; i > 0; --i) {
        a[a[0] - i + 1] = v[0][i];
    }
    b[0] = v[1][0];
    for (i = b[0]; i > 0; --i) {
        b[b[0] - i + 1] = v[1][i];
    }
    for (i = 1 ; i <= a[0]; ++i) {
        for (t = 0, j = 1; j <= b[0] || t; j++, t /= 10) {
            c[i + j - 1] = ( t += c[i + j - 1] + a[i] * b[j] ) % 10;
        }
        if (i + j - 2 > c[0]) {
            c[0] = i + j - 2;
        }
    }
    for (i = c[0]; i > 0; --i) {
        fout << c[i];
    }
    return 0;
}