提交记录 5059


用户 题目 状态 得分 用时 内存 语言 代码长度
nansns 1006. 【模板题】后缀排序 Wrong Answer 0 61.774 ms 4412 KB C++ 1.72 KB
提交时间 评测时间
2018-08-05 20:37:20 2020-08-01 00:10:29
#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;
const int MAXN = 1e5 + 7;

inline int R()
{
    char ch = getchar();
    int rt = 0;
    bool isn = false;
    for ( ; ch > '9' || ch < '0'; ch = getchar() )
        isn = ch == '-' ? true : isn;
    for ( ; ch <= '9' && ch >= '0'; ch = getchar() )
        rt = rt * 10 + ch - '0';
    return isn ? -rt : rt;
}

char c[MAXN];
int rk[MAXN << 1], t[MAXN << 1], sa[MAXN];
int f[MAXN], o[MAXN], h[MAXN], ht[MAXN];

int main ()
{
	int ns = 0;
	scanf ( "%s", c );
	int l = strlen ( c );
	if ( l == 1 )
	{
		puts ( "1" );
		return 0;
	}
	for ( int i = 0; i < l; ++i )
		rk[i + 1] = c[i], ns = max ( ns, rk[i + 1] );
	for ( int nl = 1; nl < l; nl <<= 1, ns = l )
	{
		memset ( f, 0, sizeof f );
		for ( int i = 1; i <= l; ++i )
			++f[rk[i + nl]];
		for ( int i = 1; i <= ns; ++i )
			f[i] += f[i - 1];
		for ( int i = 1; i <= l; ++i )
			o[f[rk[i + nl]]--] = i;
		memset ( f, 0, sizeof f );
		for ( int i = 1; i <= l; ++i )
			++f[rk[i]];
		for ( int i = 1; i <= ns; ++i )
			f[i] += f[i - 1];
		for ( int i = l; i; --i )
			t[o[i]] = f[rk[o[i]]]--;
		for ( int i = 1; i <= l; ++i )
			sa[t[i]] = i;
		bool uq = false;
		for ( int i = 2; i <= l; ++i )
			if ( rk[sa[i]] == rk[sa[i - 1]] && rk[sa[i] + nl] == rk[sa[i - 1] + nl] )
				t[sa[i]] = t[sa[i - 1]], uq = true;
		swap ( t, rk );
		if ( !uq )
			break;
	}
	for ( int i = 1; i <= l; ++i )
		sa[rk[i]] = i;
	for ( int i = 1; i <= l; ++i )
		printf ( "%d ", sa[i] );
	puts ( "" );
	for ( int i = 1; i <= l; ++i )
	{
		h[i] = max ( h[i - 1] - 1, 0 );
		for ( int j = i + h[i], k = sa[rk[i] - 1] + h[i]; c[j - 1] == c[k - 1]; ++j, ++k )
			++h[i];
	}
	for ( int i = 2; i <= l; ++i )
		printf ( "%d ", h[sa[i]] );
	puts ( "" );
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Subtask #1 Testcase #134.64 us44 KBWrong AnswerScore: -100

Subtask #1 Testcase #2385.67 us1 MB + 984 KBAcceptedScore: 100

Subtask #1 Testcase #3386.42 us1 MB + 984 KBAcceptedScore: 0

Subtask #1 Testcase #4667.85 us1 MB + 988 KBAcceptedScore: 0

Subtask #1 Testcase #5665.35 us1 MB + 984 KBAcceptedScore: 0

Subtask #1 Testcase #6668.51 us1 MB + 988 KBAcceptedScore: 0

Subtask #1 Testcase #732.959 ms3 MB + 960 KBAcceptedScore: 0

Subtask #1 Testcase #861.774 ms4 MB + 124 KBAcceptedScore: 0

Subtask #1 Testcase #936.768 ms3 MB + 1012 KBAcceptedScore: 0

Subtask #1 Testcase #1023.73 ms3 MB + 292 KBAcceptedScore: 0

Subtask #1 Testcase #1124.851 ms3 MB + 332 KBAcceptedScore: 0

Subtask #1 Testcase #1248.943 ms4 MB + 316 KBAcceptedScore: 0

Subtask #1 Testcase #1346.279 ms4 MB + 284 KBAcceptedScore: 0

Subtask #1 Testcase #1439.261 ms4 MB + 16 KBAcceptedScore: 0

Subtask #1 Testcase #1538.74 ms4 MB + 32 KBAcceptedScore: 0

Subtask #1 Testcase #1645.619 ms4 MB + 316 KBAcceptedScore: 0

Subtask #1 Testcase #1745.186 ms4 MB + 316 KBAcceptedScore: 0

Subtask #1 Testcase #1845.492 ms4 MB + 316 KBAcceptedScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-04-12 12:56:25 | Loaded in 2 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠