Pagini recente » Cod sursa (job #2440001) | Cod sursa (job #2166696) | Cod sursa (job #406245) | Cod sursa (job #2247401) | Cod sursa (job #466593)
Cod sursa(job #466593)
#include <stdio.h>
#include <algorithm>
using namespace std;
#define maxn 2100
long n, sum, poz, comp;
long f[11], a[maxn], b[maxn], c[maxn];
void inm()
{
for(long i=1; i<=a[0]; i++)
{
long t=0;
long j;
for(j=1; j<=b[0] || t; j++)
{
t=t+c[i+j-1]+a[i]*b[j];
c[i+j-1]=t%10;
t/=10;
}
c[0]=max(c[0], i+j-2);
}
}
long getcif()
{
while(f[poz]==0)
--poz;
f[poz]--;
return poz;
}
int main()
{
freopen("prod.in", "r", stdin);
freopen("prod.out", "w", stdout);
for(long i=1; i<=9; ++i)
{
scanf("%d", &f[i]);
sum+=f[i];
}
poz=9;
if(sum%2==0)
{
a[0]=b[0]=sum/2;
a[a[0]]=getcif();
b[b[0]]=getcif();
if(a[a[0]]>b[b[0]])
comp=1;
else
if(a[a[0]]<b[b[0]])
comp=2;
for(long i=sum/2-1; i; --i)
{
if(comp==2)
{
a[i]=getcif();
b[i]=getcif();
}
else
{
b[i]=getcif();
a[i]=getcif();
}
if(comp==0 && a[i]!=b[i])
{
if(a[i]>b[i])
comp=1;
else
comp=2;
}
}
}
else
{
a[0]=sum/2+1;
b[0]=sum/2;
b[b[0]]=getcif();
a[a[0]]=getcif();
a[a[0]-1]=getcif();
for(long i=sum/2-1; i; --i)
{
b[i]=getcif();
a[i]=getcif();
}
}
inm();
c[0]=1500;
while(c[c[0]]==0)
--c[0];
for(long i=c[0]; i; --i)
{
printf("%d", c[i]);
}
printf("\n");
return 0;
}