Cod sursa(job #414180)

Utilizator titusuTitus C titusu 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;
}