提交记录 20777
提交时间 |
评测时间 |
2024-01-02 16:21:06 |
2024-01-02 16:21:14 |
#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 = 1e6+16;
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 | 170.196 ms | 72 KB | Runtime Error | Score: 0 | 显示更多 |
Subtask #1 Testcase #2 | 45.02 us | 80 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #3 | 42.61 us | 80 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #4 | 47.36 us | 80 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #5 | 45.84 us | 80 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #6 | 46.46 us | 80 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #7 | 29.717 ms | 3 MB + 692 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #8 | 46.461 ms | 4 MB + 500 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #9 | 31.992 ms | 3 MB + 784 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #10 | 20.721 ms | 2 MB + 536 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #11 | 21.43 ms | 2 MB + 740 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #12 | 37.662 ms | 3 MB + 528 KB | Wrong Answer | Score: 0 | 显示更多 |
Subtask #1 Testcase #13 | 37.135 ms | 4 MB + 312 KB | Wrong Answer | Score: 0 | 显示更多 |
Subtask #1 Testcase #14 | 46.273 ms | 4 MB + 268 KB | Wrong Answer | Score: 0 | 显示更多 |
Subtask #1 Testcase #15 | 45.814 ms | 4 MB + 328 KB | Wrong Answer | Score: 0 | 显示更多 |
Subtask #1 Testcase #16 | 37.828 ms | 3 MB + 344 KB | Wrong Answer | Score: 0 | 显示更多 |
Subtask #1 Testcase #17 | 37.374 ms | 4 MB + 148 KB | Accepted | Score: 0 | 显示更多 |
Subtask #1 Testcase #18 | 37.525 ms | 4 MB + 148 KB | Accepted | Score: 0 | 显示更多 |
Judge Duck Online | 评测鸭在线
Server Time: 2025-07-23 14:13:39 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠