提交记录 17652


用户 题目 状态 得分 用时 内存 语言 代码长度
1443356159 1006. 【模板题】后缀排序 Wrong Answer 0 74.053 ms 18068 KB C++ 1.05 KB
提交时间 评测时间
2022-04-13 10:55:34 2022-04-13 10:55:39
#include<bits/stdc++.h>
using namespace std;
const int N=2e6+5;
char S[N];
int n,m,num,id[N],sa[N],cnt[N],h[N],rk[N];
void suffix_sort() {
	m=300;
	for(int i=1;i<=n;++i)++cnt[rk[i]=S[i]];
	for(int i=1;i<=m;++i)cnt[i]+=cnt[i-1];
	for(int i=n;i>=1;--i)sa[cnt[rk[i]]--]=i;
	for(int w=1;w<n;w<<=1) {
		num = 0;
		for(int i = n - w + 1; i <= n; i++) id[++num] = i;
		for(int i = 1; i <= n; i++) if(sa[i] > w) id[++num] = sa[i] - w;
		for(int i = 1; i <= m; i++) cnt[i] = 0;
		for(int i = 1; i <= n; i++) ++cnt[rk[i]];
		for(int i = 1; i <= m; i++) cnt[i] += cnt[i - 1];
		for(int i = n; i >= 1; i--) sa[cnt[rk[id[i]]]--] = id[i], id[i] = 0;
		swap(id, rk), rk[sa[1]] = num = 1;
		for(int i = 2; i <= n; i++)
			rk[sa[i]] = (id[sa[i]] == id[sa[i - 1]] && id[sa[i] + w] == id[sa[i - 1] + w])? num : ++num;
		m=num;
	}
	for(int i=1,j=0;i<=n;++i) {
		if(j)--j;
		while(S[i+j]==S[sa[rk[i]-1]+j])++j;
		h[rk[i]]=j;
	}
}
int main() {
	scanf("%s",S+1);n=strlen(S+1);
	suffix_sort();
	for(int i=1;i<=n;++i)printf("%d ",sa[i]);puts("");
	for(int i=2;i<=n;++i)printf("%d ",h[i]);
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #136.34 us56 KBWrong AnswerScore: -100

Subtask #1 Testcase #23.097 ms15 MB + 316 KBAcceptedScore: 0

Subtask #1 Testcase #33.096 ms15 MB + 316 KBAcceptedScore: 100

Subtask #1 Testcase #47.5 ms15 MB + 316 KBAcceptedScore: 0

Subtask #1 Testcase #57.508 ms15 MB + 316 KBAcceptedScore: 0

Subtask #1 Testcase #68.973 ms15 MB + 316 KBAcceptedScore: 0

Subtask #1 Testcase #773.728 ms17 MB + 312 KBAcceptedScore: 0

Subtask #1 Testcase #874.053 ms17 MB + 500 KBAcceptedScore: 0

Subtask #1 Testcase #973.47 ms17 MB + 364 KBAcceptedScore: 0

Subtask #1 Testcase #1054.279 ms16 MB + 648 KBAcceptedScore: 0

Subtask #1 Testcase #1154 ms16 MB + 688 KBAcceptedScore: 0

Subtask #1 Testcase #1263.978 ms17 MB + 556 KBAcceptedScore: 0

Subtask #1 Testcase #1364.099 ms17 MB + 660 KBAcceptedScore: 0

Subtask #1 Testcase #1472.406 ms17 MB + 392 KBAcceptedScore: 0

Subtask #1 Testcase #1571.972 ms17 MB + 408 KBAcceptedScore: 0

Subtask #1 Testcase #1662.619 ms17 MB + 556 KBAcceptedScore: 0

Subtask #1 Testcase #1762.337 ms17 MB + 556 KBAcceptedScore: 0

Subtask #1 Testcase #1862.528 ms17 MB + 556 KBAcceptedScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-03-17 05:15:18 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠