提交记录 20778
提交时间 |
评测时间 |
2024-01-02 16:21:49 |
2024-01-02 16:21:58 |
#include<bits/stdc++.h>
#define file(F) freopen(#F".in","r",stdin),freopen(#F".out","w",stdout)
using namespace std;
using ll=long long;
void Solve();
const int N = 1e5+15;
int n;
string s;
int sa[N],rk[N],oldrk[N];
bool cmp(int x,int y,int w) {
return oldrk[x]==oldrk[y]&&(x+w>=n?y+w>=n:oldrk[x+w]==oldrk[y+w]);
}
void suffix_array() {
int m=127;
vector<int> cnt(m+1),key1(n),id(n);
for(int i=0;i<n;i++) cnt[rk[i]=s[i]]++;
for(int i=1;i<=m;i++) cnt[i]+=cnt[i-1];
for(int i=n-1;i>=0;i--) sa[--cnt[rk[i]]]=i;
for(int w=1;w<n;w<<=1) {
int p=0;
for(int i=n-1;i>=n-w;i--) id[p++]=i;
for(int i=0;i<n;i++) if(sa[i]>=w) id[p++]=sa[i]-w;
vector<int>(m+1,0).swap(cnt);
for(int i=0;i<n;i++) cnt[key1[i]=rk[id[i]]]++;
for(int i=1;i<=m;i++) cnt[i]+=cnt[i-1];
for(int i=n-1;i>=0;i--) sa[--cnt[key1[i]]]=id[i];
memcpy(oldrk,rk,n<<2);
rk[sa[0]]=m=0;
for(int i=1;i<n;i++) rk[sa[i]]=cmp(sa[i],sa[i-1],w)?m:++m;
if(++m==n) break;
}
}
int height[N];
void lcp_array() {
int h=0;
for(int i=0;i<n;i++) if(rk[i]) {
if(h) --h;
while(s[i+h]==s[sa[rk[i]-1]+h]) ++h;
height[rk[i]]=h;
}
}
signed main() {
#ifndef ONLINE_JUDGE
#endif
cin.tie(nullptr)->sync_with_stdio(false);
Solve();
return 0;
}
void Solve() {
cin>>s; n=s.size();
suffix_array();
for(int i=0;i<n;i++) printf("%d ",sa[i]+1); puts("");
lcp_array();
for(int i=1;i<n;i++) printf("%d ",height[i]); puts("");
}
Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
Subtask #1 Testcase #1 | 173.924 ms | 72 KB | Runtime Error | Score: 0 | 显示更多 |
Subtask #1 Testcase #2 | 41.89 us | 80 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #3 | 41.15 us | 80 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #4 | 47.09 us | 84 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #5 | 46.46 us | 84 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #6 | 46.77 us | 84 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #7 | 29.671 ms | 3 MB + 680 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #8 | 46.301 ms | 4 MB + 488 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #9 | 32.015 ms | 3 MB + 772 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #10 | 20.8 ms | 2 MB + 536 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #11 | 21.458 ms | 2 MB + 740 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #12 | 37.629 ms | 3 MB + 520 KB | Wrong Answer | Score: 0 | 显示更多 |
Subtask #1 Testcase #13 | 37.453 ms | 4 MB + 304 KB | Wrong Answer | Score: 0 | 显示更多 |
Subtask #1 Testcase #14 | 46.219 ms | 4 MB + 256 KB | Wrong Answer | Score: 0 | 显示更多 |
Subtask #1 Testcase #15 | 45.883 ms | 4 MB + 316 KB | Wrong Answer | Score: 0 | 显示更多 |
Subtask #1 Testcase #16 | 38.198 ms | 3 MB + 336 KB | Wrong Answer | Score: 0 | 显示更多 |
Subtask #1 Testcase #17 | 37.528 ms | 4 MB + 136 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #18 | 37.514 ms | 4 MB + 136 KB | Accepted | Score: 0 | 显示更多 |
Judge Duck Online | 评测鸭在线
Server Time: 2025-07-23 14:18:16 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠