B. [Template] SA

内存限制:512 MiB 时间限制:3000 ms 标准输入输出
题目类型:传统 评测方式:文本比较

题目描述

这是一道模板题

读入一个长度为 的由大小写英文字母或数字组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的位置。位置编号为

两个字符按照 ASCII 码比较。

输入格式

一行一个长度为 的仅包含大小写英文字母或数字的字符串。

输出格式

第一行 个整数,第 个整数为

样例

样例输入

ababa

样例输出

5 3 1 4 2

数据范围与提示

Hint:

  • 考虑如果使用 Hash 在单次 的复杂度内求某一字符串的任意子串的 LCP(最长公共前缀)
  • 考虑使用 std::sort 进行排序
  • 总复杂度为
  • 实际上,还有 的做法。这里不再展开。