Advertisement
a53

pdi

a53
Dec 1st, 2019
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. #include <fstream>
  2. #include <vector>
  3. #define N 1000000
  4. #define M 100001
  5. using namespace std;
  6. int a[M],v[N+1],maxi[N+1],dp[M];
  7. vector<int> pr[N+1];
  8.  
  9. void eratostene()
  10. {
  11. v[1]=1;
  12. int j;
  13. for(int i=2;i<=N;++i)
  14. if(v[i]==0)
  15. {
  16. pr[i].push_back(i);
  17. j=i+i;
  18. while(j<=N)
  19. pr[j].push_back(i),v[j]=1,j+=i;
  20. }
  21. }
  22.  
  23. int main()
  24. {
  25. int n;
  26. ifstream f("pdi.in");
  27. f>>n;
  28. for(int i=1;i<=n;++i)
  29. f>>a[i];
  30. f.close();
  31. eratostene();
  32. int sol=0,d,p;
  33. for(int i=1;i<=n;++i)
  34. {
  35. dp[i]=0;
  36. d=pr[a[i]].size();
  37. for(int j=0;j<d;++j)
  38. {
  39. p=pr[a[i]][j];
  40. if(maxi[p]>dp[i])
  41. dp[i]=maxi[p];
  42. }
  43. ++dp[i];
  44. for(int j=0;j<d;++j)
  45. {
  46. p=pr[a[i]][j];
  47. if(dp[i]>maxi[p])
  48. maxi[p]=dp[i];
  49. }
  50. if(dp[i]>sol)
  51. sol=dp[i];
  52. }
  53. ofstream g("pdi.out");
  54. g<<sol;
  55. g.close();
  56. return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement