Cod sursa(job #2025727)

Utilizator refugiatBoni Daniel Stefan refugiat Data 23 septembrie 2017 10:16:51
Problema Prod Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream si("prod.in");
ofstream so("prod.out");
int fr[10],a[1005],b[1005],p[1005];
bool comp(int x[],int y[])
{
    if(x[0]!=y[0])
        return x[0]>y[0];
    for(int i=1;i<=x[0];i++)
        if(x[i]!=y[i])
            return x[i]>y[i];
    return 1;
}
void prod(int a[],int b[],int c[])
{
    int t=0;
    c[0]=a[0]+b[0]-1;
    for(int i=1;i<=a[0]+b[0];i++)
        c[i]=0;
    for(int i=1;i<=a[0];i++)
        for(int j=1;j<=b[0];j++)
            c[i+j-1]+=a[i]*b[j];
    for(int i=1;i<=c[0];i++)
    {
        c[i]+=t;
        t=c[i]/10;
        c[i]%=10;
    }
    if(t)
        c[++c[0]]=t;
}
int main()
{
    for(int i=1;i<=9;i++)
        si>>fr[i];
    for(int i=9;i;i--)
        while(fr[i])
        {
            if(comp(a,b))
                b[++b[0]]=i;
            else
                a[++a[0]]=i;
            fr[i]--;
        }
    reverse(a+1,a+a[0]+1);
    reverse(b+1,b+b[0]+1);
    prod(a,b,p);
    for(int i=p[0];i>0;--i)
        so<<p[i];
    return 0;
}