Cod sursa(job #2670859)

Utilizator victorzarzuZarzu Victor victorzarzu Data 10 noiembrie 2020 19:48:08
Problema Prod Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("prod.in");
ofstream g("prod.out");
int cif[10], s;
vector<int> n1, n2, rez;

void Read()
{
  for(int i = 1;i <= 9;++i)
    f>>cif[i];
}

void numbers()
{
  int c1 = 1, c2 = 9;
  bool state = true;
  while(c1 <= c2)
  {
    if(!cif[c1])
      {
        ++c1;
        continue;
      }
    else if(!cif[c2])
      {
        --c2;
        continue;
      }
    if(state)
      n1.push_back(c1), --cif[c1];
    else
      n2.push_back(c2), --cif[c2];
    state ^= 1;
  }
  reverse(n2.begin(), n2.end());
}

void multiply()
{
  int t = 0;
  s = n1.size() + n2.size(); 
  for(int i = 0;i <= n1.size() + n2.size();++i)
    rez.push_back(0);

  for(int i = 1;i <= n1.size();++i)
    for(int j = 1;j <= n2.size();++j)
      {
        rez[i + j - 1] += n1[i - 1] * n2[j - 1] + t;
        t = rez[i + j - 1] / 10;
        rez[i + j - 1] %= 10;
      }
   if(t)
    rez[s] = t;
}

void Solve()
{
  numbers(); 
  multiply();
  for(int i = s;i >= 1;--i)
    g<<rez[i];
}

int main()
{
  Read();
  Solve();
  return 0;
}