Advertisement
Rentib

Untitled

Mar 10th, 2020
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.81 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. //możesz pozmieniać s.size() na n
  6. string s;
  7. int wazne;
  8. int P[1000007], n;
  9. cin >> n >> s;
  10. int k=0;
  11. P[0]=0;
  12. for ( int i=1; i<s.size() ; i++)
  13. {
  14. while (k>0 and s[i]!=s[k])
  15. {
  16. k=P[k-1];
  17. }
  18. if( s[i]==s[k])
  19. {
  20. k=k+1;
  21. }
  22. P[i]=k;
  23. }
  24. wazne=P[s.size()-1];
  25. for ( int i=0; i<s.size()-1-P[s.size()-1]; i++)
  26. {
  27. P[i]=P[i+P[s.size()-1]];
  28. }
  29. k=0;
  30. for ( int i=1; i<s.size()-2*P[s.size()-1] ; i++)
  31. {
  32. while (k>0 and s[i]!=s[k])
  33. {
  34. k=P[k-1];
  35. }
  36. if( s[i]==s[k])
  37. {
  38. k=k+1;
  39. }
  40. P[i]=k;
  41. }
  42. cout<<P[s.size()-2*P[s.size()-1]-1]+wazne;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement