fork download
  1. #include<bits/stdc++.h>
  2. #define N 10000
  3. using namespace std;
  4. typedef long long ll;
  5. ll f[N],n,m,res=0;
  6. struct mm
  7. {
  8. ll so;
  9. int vt;
  10. };
  11. mm a[N];
  12. bool compare(mm a,mm b)
  13. {
  14. return (a.so<b.so);
  15. }
  16. void Read()
  17. {
  18. scanf("%d",&n);
  19. for(int i=1;i<=n;i++)
  20. {
  21. scanf("%lld",&a[i].so);
  22. a[i].vt=i;
  23. f[i]=1;
  24. }
  25. sort(a+1,a+1+n,compare);
  26. }
  27. void Solve()
  28. {
  29. for(int i=1;i<n;i++)
  30. for(int j=i+1;j<=n;j++)
  31. if(a[j].so%a[i].so==0 && f[j]<f[i]+1) f[j]=f[i]+1;
  32. for(int i=1;i<=n;i++) res=max(res,f[i]);
  33. printf("%d\n",res);
  34. for(int i=1;i<=res;i++)
  35. {
  36. for(int j=1;j<=n;j++) if(f[j]==i) printf("%d ",a[j].vt);
  37. printf("\n");
  38. }
  39. }
  40. int main()
  41. {
  42. freopen("SUBSET.inp","r",stdin);
  43. freopen("SUBSET.out","w",stdout);
  44. Read();
  45. Solve();
  46. }
  47.  
Success #stdin #stdout 0s 5544KB
stdin
Standard input is empty
stdout
Standard output is empty