fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define int long long
  5.  
  6. #define for1(i,m,n) for(int i=m;i<=n;i++)
  7. #define for0(i,m,n) for(int i=m;i<n;i++)
  8. #define vll(v) v.beign(),v.end()
  9. #define ii pair<int,int>
  10. #define se second
  11. #define fi first
  12. #define el '\n'
  13.  
  14. const int N=1e6;
  15. const int MOD=1e9+7;
  16. vector<int>v;
  17. int a[N+8],prime[N+8];
  18. void sang(){
  19. memset(a,0,sizeof a);
  20. for(int i=2;i*i<=N;i++)
  21. if(a[i]==0){
  22. for(int j=i*i;j<=N;j+=i){
  23. a[j]=1;
  24. prime[j]=i;
  25. }
  26. }
  27. }
  28. string d[N+8];
  29. unordered_map<string,int>mp;
  30. signed main(){
  31. ios_base::sync_with_stdio(0);
  32. cin.tie(0);
  33. cout.tie(0);
  34. sang();
  35. string s;cin>>s;
  36. for(auto &x:s){
  37. if(x>'9') x=' ';
  38. }
  39. string t;
  40. stringstream ss(s);
  41. while(ss>>t){
  42. v.push_back(stoi(t));
  43. }
  44.  
  45. for(auto x:v){
  46. if(d[x].size()!=0) continue;
  47. int t=x;
  48. while(t>1){
  49. int pr=prime[t];
  50. if(pr==0&&t>1) {
  51. d[x]+=' '+to_string(t);
  52. break;
  53. }
  54. while(t%pr==0){
  55. t/=pr;
  56. }
  57. d[x]+=' '+to_string(pr);
  58. }
  59. }
  60.  
  61. int ok=0,ans=0,lengh=0,st=0;
  62. for(auto x:v) {
  63. //cout<<d[x]<<el;
  64. stringstream ss(d[x]);
  65. while(ss>>t){
  66. mp[t]++;
  67. if(mp[t]>=2) ok++;
  68. }
  69.  
  70. while(ok){
  71. // cout<<x<<el;
  72. lengh--;
  73. stringstream xoa(d[v[st]]);
  74. while(xoa>>t){
  75. if(mp[t]>=2){
  76. ok--;
  77. }
  78. mp[t]--;
  79. }
  80. st++;
  81. }
  82. // cout<<el;
  83. // for(auto x:mp) cout<<x.fi<<' '<<x.se<<el;
  84. lengh++;
  85. ans=max(ans,lengh);
  86. }
  87. cout<<ans;
  88. return 0;
  89. }
  90. /*
  91. a14a5ac7a6bb
  92.  
  93. ac5b2c3a7b
  94. */
  95.  
Success #stdin #stdout 0.04s 50436KB
stdin
Standard input is empty
stdout
Standard output is empty