Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <vector>
- #include <algorithm>
- using namespace std;
- ifstream fin("numerologie.in");
- ofstream fout("numerologie.out");
- int x[11],n,m,a[1251],c[1251],p[20];
- vector <int> desc[1250];
- int summax=2000000000;
- void Descompunere(int x)
- {
- int cx=x,d=2,ok=0;
- while(x!=1)
- {
- if(x%d==0) {
- if(ok==0) {desc[cx].push_back(d); ok=1;}
- x=x/d;
- }
- else {d++;ok=0;}
- }
- }
- void Try()
- { int cost=0;int viz[20];
- for( int i=1; i<=n; i++ )
- {
- int ok=0;
- for(j=1; j<=11; j++)
- if(x[j]==1 && binary_search(desc[a[i]].begin(),desc[a[i]].end(),p[j]))
- {
- ok=1;
- if(viz[p[j]]==0) {viz[p[j]]=1;cost+=c[p[j]];}
- }
- }
- }
- void Back(int k)
- {
- for(i=0;i<=1;i++)
- {
- x[k]=i;
- if(k==n) Try();
- else Back(k+1);
- }
- }
- int main()
- { int i;
- p[1]=2;
- p[2]=3;
- p[3]=5;
- p[4]=7;
- p[5]=11;
- p[6]=13;
- p[7]=17;
- p[8]=19;
- p[9]=23;
- p[10]=29;
- p[11]=31;
- fin>>n>>m;
- for( i=1; i<=n; i++)
- fin >> a[i];
- for( i=1; i<=m; i++)
- fin>>c[i];
- for( i=1; i<=n; i++)
- {
- Descompunere(a[i]);
- }
- Back(1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement