Cod sursa(job #871657)

Utilizator rughibemBelcineanu Alexandru Ioan rughibem Data 4 februarie 2013 23:02:34
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

FILE *f=fopen("economie.in","r"), *g=fopen("economie.out","w");

long int n, v[1005], sume[50005], sol[1005];

void citire(){
long int i;
    fscanf(f,"%ld\n",&n);
    for(i=1;i<=n;i++){fscanf(f,"%ld",&v[i]);}
    sort(v+1,v+n+1);
}

void rezolvare(){   // Sper sa intelegi, Stefi
long int i, j, vi, vn=v[n];

    for(i=1;i<=n;i++){
        vi=v[i];

        if(sume[vi]==0){

            sol[0]++; sol[sol[0]]=vi;
            sume[vi]=1;

            for(j=1;j<=vn-vi;j++){
                if(sume[j]==1){sume[j+vi]=1;}
            }

        }

    }

    //Afisarea
    fprintf(g,"%ld\n",sol[0]);
    for(i=1;i<=sol[0];i++){fprintf(g,"%ld\n",sol[i]);}


}

int main(){

    citire();
    rezolvare();

return 0;
}