Files
SH-Quizzes/ACMOJ-1477.cpp
2024-04-18 18:38:55 +08:00

29 lines
584 B
C++

#include <algorithm>
#include <cstdio>
#include <cstring>
#include <stack>
using namespace std;
const int kMaxN = 1e6 + 10;
char s[kMaxN];
int len = 0;
int Next[kMaxN];
int main() {
#ifdef local
freopen("pro.in", "r", stdin);
#endif
scanf("%s", s + 1);
len = strlen(s + 1);
for (int i = 2, j = 0; i <= len; i++) {
while (j > 0 && s[i] != s[j + 1]) j = Next[j];
if (s[i] == s[j + 1]) j++;
Next[i] = j;
}
stack<int> res;
for (int p = len; p > 0; p = Next[p]) res.push(p);
while(!res.empty())
{
printf("%d\n",res.top());
res.pop();
}
return 0;
}