Cod sursa(job #2588266)

Utilizator levladiatorDragutoiu Vlad-Ioan levladiator Data 24 martie 2020 16:39:51
Problema NumMst Scor 24
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.45 kb
#include <bits/stdc++.h>
#define NMAX 10005
using namespace std;
ifstream fin("nummst.in");
ofstream fout("nummst.out");

int n,rasp,v[NMAX],afis[NMAX],cnt,nrprime,crasp;
bool prim[NMAX];

int main()
{
    fin>>n;
    for(int i=2;i*i<=n;i++)
    {
        if(n%i==0)
        {
            rasp=i;
            break;
        }
    }

    prim[0]=prim[1]=1;
    v[++nrprime]=2;

    for(int i=4;i<=rasp;i+=2)
        prim[i]=1;

    for(int i=3;i<=rasp;i+=2)
        if(prim[i]==0)
        {
            v[++nrprime]=i;
            for(int j=i*2;j<=rasp;j+=i)
                prim[j]=1;
        }

    cnt=1;
    crasp=rasp;
    int i=0;
    while(rasp&&cnt<=nrprime)
    {
        if(rasp-v[cnt]-v[cnt+1]>=0)
        {
            rasp-=v[cnt];
            i++;
            afis[i]=(n/crasp)*v[cnt];
            cnt++;
        }
        else
        {
            if(rasp>=v[cnt+1])
            {
                rasp-=v[cnt+1];
                i++;
                afis[i]=(n/crasp)*v[cnt+1];
                cnt++;
            }
            else if(rasp>=v[cnt])
            {
                rasp-=v[cnt];
                i++;
                afis[i]=(n/crasp)*v[cnt];
                cnt++;
            }
            else
            {
                i++;
                afis[i]=(n/crasp)*rasp;
                rasp=0;
            }
        }
    }
    for(int j=1;j<=i;j++)
        fout<<afis[j]<<" ";

}