Cod sursa(job #247725)

Utilizator mihaipoascaPoasca Mihai mihaipoasca Data 23 ianuarie 2009 21:04:48
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>

FILE *fin=fopen("economie.in","r"),
    *fout=fopen("economie.out","w");

int N,M,V[1002],A[4002];
char s[50000];

void swap(int x,int y){
    int aux;
    aux=A[x];A[x]=A[y];A[y]=aux;
}

void colorare(int x){
    s[x]=1;
    for(int i=x;i+x<=A[N];i++)
        if(s[i]==1)
            s[i+x]=1;
}

int main(){
    fscanf(fin,"%d",&N);
    for(int i=1;i<=N;i++)
        fscanf(fin,"%d",&A[i]);

    for(int i=1;i<N;i++)
        for(int j=i+1;j<=N;j++)
            if(A[j]<A[i])
                swap(j,i);

    for(int i=1;i<=N;i++)
        if(s[A[i]]==0){
            V[++M]=A[i];
            colorare(A[i]);
        }

    fprintf(fout,"%d\n",M);
    for(int i=1;i<=M;i++)
        fprintf(fout,"%d\n",V[i]);

    fclose(fin);
    fclose(fout);
    return 0;

}