Cod sursa(job #414180)
| Utilizator | Data | 9 martie 2010 19:58:09 | |
|---|---|---|---|
| Problema | Economie | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.5 kb |
using namespace std;
#include <fstream>
int v[50005], n ,Max, x[1001],c[1001], nc;
void back(int k,int s){
for(int i=0;s+i*c[k]<=Max;i++){
x[k]=i;
v[s+i*c[k]]=0;
if(k<nc)
back(k+1,s+i*c[k]);
}
}
int main(){
ifstream fin("economie.in");
fin>>n;
for(int i=1;i<=n;++i){
int x;
fin>>x;
v[x]=1;
if(x>Max)
Max=x;
}
for(int i=1;i<=Max;++i)
if(v[i]==1){
c[++nc]=i;
back(1,0);
}
ofstream fout("economie.out");
fout<<nc<<"\n";
for(int i=1;i<=nc;++i)
fout<<c[i]<<"\n";
return 0;
}
