Pagini recente » Cod sursa (job #2440339) | Cod sursa (job #946527) | Cod sursa (job #2336950) | Cod sursa (job #1995288) | Cod sursa (job #2415585)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("prod.in");
ofstream g ("prod.out");
const int nmax=1e3+3;
int t,v[13],t1[nmax],t2[nmax],usu[3*nmax],p;
inline bool cmp() //le compar sa vad care mai trebuie crescuta
{
if(t1[0]!=t2[0]) return t1[0]>t2[0];
for(int i=1;i<=t1[0];++i) if(t1[i]!=t2[i]) return t1[i]>t2[i];
return false;
}
int main()
{
ios::sync_with_stdio(false);
for(int i=1;i<=9;++i) f>>v[i];
for(int i=9;i>0;--i) //le aduc la mijloc
{
while(v[i])
{
if(cmp()) t2[++t2[0]]=i;
else t1[++t1[0]]=i;
--v[i];
}
}
for(int i=t1[0];i;--i) //fac inmultirea
{
for(int j=t2[0];j;--j) usu[t1[0]+t2[0]-i-j+1]+=t1[i]*t2[j];
}
usu[0]=t1[0]+t2[0]-1;
int p=1;
while(p<=usu[0]||t!=0) //fac transporturile
{
usu[p]+=t;
t=usu[p]/10;
usu[p]%=10;
++p;
}
usu[0]=max(usu[0],p-1);
for(p=usu[0];p;--p) g<<usu[p];
return 0;
}