#include <iostream>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXBUF=20000005;
char B[MAXBUF],*Si=B,*Ti=B;
inline char getc()
{if (Si==Ti) Ti=(Si=B)+fread(B,1,MAXBUF,stdin);
if (Si==Ti) return 0;
return *Si++;
}
template <class T>
inline void read(T &a)
{static char c;
while ((c=getc())<'0'||c>'9');a=c-'0';
while ((c=getc())>='0'&&c<='9') a=(a<<3)+(a<<1)+c-'0';
}
char Buff[MAXBUF],*sti=Buff;
template <class T>
inline void write(T a)
{if (a==0) {*sti++='0';return;}
int t[21],cnt=0;
while (a) t[++cnt]=a%10,a/=10;
for (int i=cnt;i>=1;i--) *sti++='0'+t[i];
}
const int N=100010;
char s[N];
int n,sa[N],sa2[N<<1],rk[N<<1],px[N],cnt[N],height[N];
bool cmp(int x,int y,int w) { return sa2[x]==sa2[y]&&sa2[x+w]==sa2[y+w]; }
int main()
{
int i,j,k,w,p,m=300;
scanf("%s",s+1);
n=strlen(s+1);
for (i=1;i<=n;++i) ++cnt[rk[i]=s[i]];
for (i=1;i<=m;++i) cnt[i]+=cnt[i-1];
for (i=n;i>=1;--i) sa[cnt[rk[i]]--]=i;
for (w=1;w<n;w<<=1,m=p)
{
memset(cnt,0,sizeof(cnt));
for (p=0,i=n;i>n-w;--i) sa2[++p]=i;
for (i=1;i<=n;++i) if (sa[i]>w) sa2[++p]=sa[i]-w;
for (i=1;i<=n;++i) ++cnt[px[i]=rk[sa2[i]]];
for (i=1;i<=m;++i) cnt[i]+=cnt[i-1];
for (i=n;i>=1;--i) sa[cnt[px[i]]--]=sa2[i];
swap(sa2,rk);
for (p=0,i=1;i<=n;++i) rk[sa[i]]=cmp(sa[i],sa[i-1],w)?p:++p;
}
for (i=1;i<=n;++i) write(sa[i]),*sti++=' ';
*sti++='\n';
for (i=1,k=0;i<=n;++i)
{
if (k) --k;
while (s[sa[rk[i]-1]+k]==s[i+k]) ++k;
height[rk[i]]=k;
}
for (i=2;i<=n;++i) write(height[i]),*sti++=' ';
fwrite(Buff,1,sti-Buff,stdout);
return 0;
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Subtask #1 Testcase #1 | 35.12 us | 64 KB | Wrong Answer | Score: -100 | 显示更多 |
| Subtask #1 Testcase #2 | 380.07 us | 1 MB + 988 KB | Accepted | Score: 100 | 显示更多 |
| Subtask #1 Testcase #3 | 379.05 us | 1 MB + 988 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #4 | 774 us | 1 MB + 988 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #5 | 773.9 us | 1 MB + 988 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #6 | 905.45 us | 1 MB + 988 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #7 | 25.284 ms | 4 MB + 704 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #8 | 25.136 ms | 5 MB + 56 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #9 | 25.039 ms | 4 MB + 808 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #10 | 15.412 ms | 3 MB + 820 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #11 | 15.045 ms | 3 MB + 900 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #12 | 14.651 ms | 5 MB + 440 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #13 | 14.729 ms | 5 MB + 376 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #14 | 23.623 ms | 4 MB + 864 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #15 | 23.239 ms | 4 MB + 896 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #16 | 14.685 ms | 5 MB + 440 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #17 | 14.465 ms | 5 MB + 440 KB | Accepted | Score: 0 | 显示更多 |
| Subtask #1 Testcase #18 | 14.709 ms | 5 MB + 440 KB | Accepted | Score: 0 | 显示更多 |