Cod sursa(job #1752739)

Utilizator AnaRaduAna-Maria Radu AnaRadu Data 4 septembrie 2016 23:59:16
Problema Prod Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <stdio.h>
#define maxc 1005
int fr[10],a[maxc],b[maxc],c[maxc*maxc];
bool cmp(){
    int i;
    for(i=0;i<=a[0];i++){
        if(a[i]<b[i])
            return true;
        if(a[i]>b[i])
            return false;
    }
    return true;
}
int main(){
    FILE *fin,*fout;
    fin=fopen("prod.in","r");
    fout=fopen("prod.out","w");
    int i,j,k,n,m,ad,cif,cop;
    cif=0;
    for(i=1;i<=9;i++){
        fscanf(fin,"%d",&fr[i]);
        cif+=fr[i];
    }
    for(i=9;i>=1;i--)
        while(fr[i]!=0){
            if(cmp()==true){
                a[0]++;
                a[a[0]]=i;
            }
            else{
                b[0]++;
                b[b[0]]=i;
            }
            fr[i]--;
        }
    n=a[0];
    m=b[0];
    for(i=1;i<=n/2;i++){
        cop=a[n-i+1];
        a[n-i+1]=a[i];
        a[i]=cop;
    }
    for(i=1;i<=m/2;i++){
        cop=b[m-i+1];
        b[m-i+1]=b[i];
        b[i]=cop;
    }
    for(i=1;i<=m;i++)
        for(j=1;j<=n;j++)
            c[j+i-1]+=b[i]*a[j];
    k=m+n;
    ad=0;
    for(i=1;i<=k;i++){
        c[i]+=ad;
        ad=c[i]/10;
        c[i]%=10;
    }
    if(c[k]==0)
        k--;
    for(i=k;i>=1;i--)
        fprintf(fout,"%d",c[i]);
    fclose(fin);
    fclose(fout);
    return 0;
}