Cod sursa(job #1960490)

Utilizator stefdascalescuStefan Dascalescu stefdascalescu Data 10 aprilie 2017 14:19:12
Problema Economie Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("economie.in");
ofstream g("economie.out");
int n,v[1002];
bitset<100002>F;
bitset<100002>z;
int a[1002],l;
int main()
{
    f>>n;
    for(int i=1;i<=n;z[v[i]]=1,++i)
        f>>v[i];
    sort(v+1,v+n+1);
    int vr=n;
    int i=1;
    while(vr>0)
    {
        if(F[v[i]]==0)
        {
            for(int j=v[i];j<=50000;j+=v[i])
            {
                F[j]=1;
                if(z[j]==1)
                {
                    --vr;
                    z[j]=0;
                }
            }
            for(int j=1;j<=50000;++j)
                if(F[j]==1){
                    F[j+v[i]]=1;
                    if(z[j+v[i]]==1){
                        vr--;
                        z[j+v[i]]=0;
                    }
                }
            ++l;
            a[l]=v[i];
        }
        ++i;
    }
    g<<l<<'\n';
    for(int i=1;i<=l;++i)
        g<<a[i]<<" ";
    return 0;
}