Cod sursa(job #2133363)

Utilizator DavidDragulinDragulin David DavidDragulin Data 16 februarie 2018 20:45:46
Problema Prod Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("prod.in");
ofstream fout("prod.out");
int c[10009],a[1009],b[1009],n,i,x,v[10],j;
void MultHuge()
{
    int i,j,T=0;

    c[0]=a[0]+b[0]-1;
    for (i=1; i<=a[0]+b[0];) c[i++]=0;
    for (i=1; i<=a[0]; i++)
        for (j=1; j<=b[0]; j++)
            c[i+j-1]+=a[i]*b[j];
    for (i=1; i<=c[0]; i++)
    {
        T=(c[i]+=T)/10;
        c[i]%=10;
    }
    if (T) c[++c[0]]=T;
}
bool big()
{
    if(a[0]>b[0])
        return true;
    if(a[0]<b[0])
        return false;
    int i;
    for(i=1; i<=a[0]; i++)
    {
        if(a[i]<b[i])
            return false;
        if(a[i]>b[i])
            return true;
    }
    return true;
}
int main()
{
    for(i=1; i<=9; i++)
        fin>>x,v[i]+=x;
    for(i=9; i>=1; i--)
    {
        for(j=1; j<=v[i]; j++)
        {
            if(big()==true)
                b[++b[0]]=i;
            else
                a[++a[0]]=i;
        }
    }
    for(i=1;i<=a[0]/2;i++)
        swap(a[i],a[a[0]-i+1]);
    for(i=1;i<=b[0]/2;i++)
        swap(b[i],b[b[0]-i+1]);
     MultHuge();
    for(i=c[0]; i>=1; i--)
        fout<<c[i];
    return 0;
}