Pagini recente » Borderou de evaluare (job #207029) | Cod sursa (job #1759668) | Cod sursa (job #746408) | Cod sursa (job #1605513) | Cod sursa (job #871657)
Cod sursa(job #871657)
#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;
}