fork(1) download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main() {
  4. int n;
  5. while(scanf("%d\n",&n)!=EOF) {
  6.  
  7. char p[10040];
  8. gets(p);
  9.  
  10. int lps[n+1];
  11. lps[0]=0;
  12. int q=0;
  13. for(int i=1;i<n;i++) {
  14. while(q>0&&p[i]!=p[q])
  15. q=lps[q];
  16. if(p[i]==p[q])
  17. q=q+1;
  18. lps[i]=q;
  19. }
  20. q=0;
  21. int i=0,flag=0;
  22. char c;
  23. while((c=getchar())!=EOF&&c!='\n') {
  24. while(q>0&&c!=p[q])
  25. q=lps[q];
  26. if(p[q]==c)
  27. q++;
  28. if(q==n) {
  29. printf("%d\n",i-n+1);
  30. q=lps[q-1];
  31. flag=1;
  32. }
  33. i++;
  34. }
  35. if(!flag) puts("\n");
  36. }
  37.  
  38.  
  39. return 0;
  40. }
  41.  
Success #stdin #stdout 0s 3144KB
stdin
2
na
banananobano
6
foobar
foo
9
foobarfoo
barfoobarfoobarfoobarfoobarfoo
stdout
2
4


3
9
15
21