Cod sursa(job #396769)

Utilizator MKLOLDragos Ristache MKLOL Data 15 februarie 2010 20:35:10
Problema Economie Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<algorithm>
using namespace std;
struct cel
{
    int x,y;
} v[5000];
char l[50010];
int K;
int cmp(cel a,cel b)
{
    return a.x<b.x;
}
int N;
int main()
{
freopen("economie.in","r",stdin);
freopen("economie.out","w",stdout);
    scanf("%d",&N);
    for(int i=1;i<=N;++i)
    {
    scanf("%d",&v[i].x);
    l[v[i].x]=1;
    }
    sort(v+1,v+N+1,cmp);
    l[0]=1;
    for(int i=1;i<=N;++i)
    {
        if(v[i].y==0)
        {
        v[i].y=1;
        l[v[i].x]=1;
        ++K;
            for(int j=v[i].x;j<=50000;j+=v[i].x)
            {
                l[j]=1;
            }
            for(int j=i+1;j<=N;++j)
            {
             if(l[v[j].x-v[i].x]==1)
             {
                l[v[j].x]=1;
                v[j].y=2;
             }
            }
        }
    }
    printf("%d\n",K);
    for(int i=1;i<=N;++i)
    {
    if(v[i].y==1)
        printf("%d ",v[i].x);
    }
return 0;

}