Cod sursa(job #1796909)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 3 noiembrie 2016 21:19:59
Problema Prod Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("prod.in");
ofstream g("prod.out");
int i,fr[10],a[1<<10],b[1<<10],p[1<<10];
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 i,j,T=0;
    C[0]=A[0]+B[0]-1;
    for(i=1;i<=A[0]+B[0];i++) 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++)
    {
        C[i]+=T;
        T=C[i]/10;
        C[i]%=10;
    }
    if(T) C[++C[0]]=T;
}
int main()
{
    for(i=1;i<=9;i++) f>>fr[i];
    for(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(i=p[0];i>0;--i) g<<p[i];
    return 0;
}