Cod sursa(job #1960475)

Utilizator stefdascalescuStefan Dascalescu stefdascalescu Data 10 aprilie 2017 14:12:36
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 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(v[i]%v[i-1]>0)
        {
            int us=0;
            for(int j=1;j<=50000;++j)
                if(F[j]==1 && F[j+v[i]]==0)
                    for(int k=j+v[i];k<=50000;k+=j+v[i]){
                        F[j+v[i]]=1;
                        if(z[j+v[i]]==1){
                            vr--;
                            us=1;
                            z[j+v[i]]=0;
                        }
                    }
                else
                    if(j%v[i]==0 && F[j]==0)
                    {
                        F[j]=1;
                        if(z[j]==1)
                        {
                            --vr;
                            us=1;
                            z[j]=0;
                        }
                    }
            if(us==1)
            {
                ++l;
                a[l]=v[i];
            }
        }
        ++i;
    }
    g<<l<<'\n';
    for(int i=1;i<=l;++i)
        g<<a[i]<<" ";
    return 0;
}