Cod sursa(job #288426)

Utilizator alecmanAchim Ioan Alexandru alecman Data 25 martie 2009 19:43:29
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<cstdio>
#include<vector>
#include<algorithm>

using namespace std;

#define INPUT "economie.in"
#define OUTPUT "economie.out"
#define pb push_back

const int NMAX = 1001;

FILE *fin = fopen(INPUT, "r"), *fout = fopen(OUTPUT, "w");

int N;
vector<int> G;
int V[ NMAX ], Valid[ NMAX ], P[ NMAX ];

void readData()
{
  int X;

  fscanf(fin, "%d", &N);

  for(int i = 1; i <= N; ++i)
  {
    fscanf(fin, "%d", &V[ i ]);
    P[ i ] = i;
  }
}

inline int cmp(int A, int B)
{
  return V[ A ] < V[ B ];
}

void solve()
{
  int cont = 0;

  vector<int>::iterator it;

  for(int i = 1; i <= N; ++i)
  {
    if(!Valid[ i ])
    {
      for(int j = i + 1; j <= N; ++j)
        if(V[ P[ j ] ] % V[ P[ i ] ] == 0)
          Valid[ j ] = 1;

      ++cont;
      G.pb(V[ P[ i ] ]);
    }
  }

  fprintf(fout, "%d\n", cont);
  for(it = G.begin(); it != G.end(); ++it)
    fprintf(fout, "%d\n", *it);
}

int main()
{
  readData();

  sort(P+1, P+N+1);

  solve();

  fclose(fin);
  fclose(fout);

  return 0;
}