Cod sursa(job #292204)

Utilizator klamathixMihai Calancea klamathix Data 30 martie 2009 21:15:47
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<stdio.h>
#include<algorithm>
#include<stdlib.h>

#define MAXN 1001
#define MAXVAL 50001

using namespace std;

int i , j , k , N , v[MAXN], mark[MAXVAL] , nr , maxs , chosenones[MAXN];

int main()
{
    FILE*in = fopen("economie.in","r");
    FILE*out = fopen("economie.out","w");
    
    fscanf(in,"%d",&N);
    
    for( i = 1; i <= N ; i++)
         {
          fscanf(in,"%d",&v[i]);
          if( v[i] > maxs) maxs = v[i];
         }
         
    sort(v + 1 , v + N + 1);
         
    mark[0] = 1;
     
    for( i = 1; i <= N ; i++)
    {
         if(!mark[v[i]]) 
           {
                         chosenones[++k] = v[i];
                         
                       
                         
                         for( j = 0 ; j <= maxs; j++)
                          if(mark[j] == 1 && j + v[i] <= maxs) mark[j + v[i]] = 1;
           }
           
    }
    
    fprintf(out,"%d\n",k);
    for( i = 1; i <= k ; i++)
     fprintf(out, "%d\n",chosenones[i]);
    
    return 0;
    
}