Cod sursa(job #2121919)

Utilizator DruffbaumPopescu Vlad Druffbaum Data 4 februarie 2018 14:24:17
Problema Economie Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <cstdio>
#include <algorithm>

const int MAXN = 1e3;
const int MAXV = 5e4;

int v[MAXN], ans[MAXN];
bool r[MAXV + 1];

int main() {
  int n, e;
  FILE *f = fopen("economie.in", "r");
  fscanf(f, "%d", &n);
  for (int i = 0; i < n; ++i) {
    fscanf(f, "%d", &v[i]);
  }
  std::sort(v, v + n);
  ans[0] = v[0];
  for (int i = ans[0]; i <= MAXV; i += ans[0]) {
    r[i] = 1;
  }
  e = 1;
  for (int i = 1; i < n; ++i) {
    if (!r[v[i]]) {
      ans[e++] = v[i];
      for (int j = 0; j + v[i] <= v[n - 1]; ++j) {
        if (r[j]) {
          r[v[i] + j] = 1;
        }
      }
    }
  }
  fclose(f);
  f = fopen("economie.out", "w");
  fprintf(f, "%d\n", e);
  for (int i = 0; i < e; ++i) {
    fprintf(f, "%d\n", ans[i]);
  }
  fclose(f);
  return 0;
}