Pagini recente » Cod sursa (job #1018969) | Cod sursa (job #2977680) | Cod sursa (job #2542128) | Cod sursa (job #2887174) | Cod sursa (job #110667)
Cod sursa(job #110667)
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX = 1 << 10;
const int VMAX = 1 << 16;
int N, A[NMAX];
bool V[VMAX];
int NR, R[NMAX];
void read(void) {
FILE *fin = fopen("economie.in", "rt");
int i;
fscanf(fin, " %d", &N);
for (i = 0; i < N; ++i)
fscanf(fin, " %d", A + i);
fclose(fin);
}
void dinamica(void) {
int i, v, stop = A[N - 1];
V[0] = true;
for (i = 0; i < N; ++i) {
v = A[i];
if (V[v] == true) continue;
R[NR++] = v;
for (i = 0; i + v <= stop; ++i)
if (V[i]) V[i + v] = true;
}
}
void write(void) {
FILE *fout = fopen("economie.out", "wt");
int i;
fprintf(fout, "%d\n", NR);
for (i = 0; i < NR; ++i)
fprintf(fout, "%d\n", R[i]);
fclose(fout);
}
int main(void) {
read();
sort(A, A + N);
dinamica();
write();
return 0;
}