fork download
  1. #include <iostream>
  2. #include<string>
  3.  
  4. using namespace std;
  5. int ps[1000];
  6. int k,t;
  7. string w;
  8. string tekst;
  9. void kmp()
  10. {
  11. ps[0]=0;
  12. ps[1]=0;
  13. int k=w.length();
  14. t=0;
  15. for(int j=1;j<k;j++)
  16. {
  17. while((t>0)&&(w[j]!=w[t])) t=ps[t];
  18. if(w[j]==w[t])
  19. t++;
  20. ps[j+1]=t;
  21. }
  22. }
  23. int main() {
  24. cin>>w;
  25. cin>>tekst;
  26. w=w+'#'+tekst;
  27. k=w.length();
  28. kmp();
  29. for(int i=1;i<=k;i++)
  30. cout<<ps[i]<<" ";
  31. // your code goes here
  32. return 0;
  33. }
Success #stdin #stdout 0s 5324KB
stdin
abab
aababababaaabbbababab
stdout
0 0 1 2 0 1 1 2 3 4 3 4 3 4 3 1 1 2 0 0 1 2 3 4 3 4