Cod sursa(job #3366840)
| Utilizator | Data | 4 octombrie 2026 19:18:15 | |
|---|---|---|---|
| Problema | Economie | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.63 kb |
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("economie.in");
ofstream fout("economie.out");
int N,v[1001];
int dp[50001]; //notez daca pot forma suma i folosind monedele deja alese
int sol[1001],nr;
int main()
{
fin>>N;
for(int i=1;i<=N;i++)
fin>>v[i];
sort(v+1,v+N+1);
dp[0]=1;
for(int i=1;i<=N;i++){
if(dp[v[i]]==0){
sol[++nr]=v[i];
for(int j=v[i];j<=50000;j++)
if(dp[j-v[i]]==1)
dp[j]=1;
}
}
fout<<nr<<endl;
for(int i=1;i<=nr;i++)
fout<<sol[i]<<" ";
return 0;
}
