Submission #1869316


Source Code Expand

#include <cstdio>
int N, kmp[200001], G = 1;
char s[200002];
long long L, R, len[666], ans[666][26], O[26];
void Calc(long long x, int f)
{
	for (int i = G; i; i--)
		if (len[i] <= x)
		{
			x -= len[i];
			for (int j = 0; j < 26; j++)
				O[j] += f * ans[i][j];
		}
	for (int i = 1; i <= x; i++)
		O[s[i] - 'a'] += f;
}
int main()
{
	scanf("%s", s + 1);
	while (s[N + 1])
		N++;
	scanf("%lld%lld", &L, &R);
	for (int i = 2; i <= N; i++)
	{
		int ans = kmp[i - 1];
		while (ans && s[ans + 1] != s[i])
			ans = kmp[ans];
		if (s[ans + 1] == s[i])
			kmp[i] = ans + 1;
		else
			kmp[i] = 0;
	}
	int E = N;
	while (E + E >= N)
		E = kmp[E];
	N -= E;
	if (kmp[N] << 1 >= N || kmp[N] == 0)
	{
		int T = N - kmp[N];
		for (int i = 1; i <= T; i++)
			O[s[i] - 'a'] += (R + T - i) / T - (L - 1 + T - i) / T;
		for (int i = 0; i < 26; i++)
			printf("%lld%c", O[i], " \n"[i == 25]);
		return 0;
	}
	len[0] = N - kmp[N];
	len[1] = N;
	for (int i = 1; i <= N - kmp[N]; i++)
		ans[0][s[i] - 'a']++;
	for (int i = 1; i <= N; i++)
		ans[1][s[i] - 'a']++;
	while (len[G - 1] + len[G] <= R)
	{
		len[G + 1] = len[G - 1] + len[G];
		for (int i = 0; i < 26; i++)
			ans[G + 1][i] = ans[G - 1][i] + ans[G][i];
		G++;
	}
	Calc(R, 1);
	Calc(L - 1, -1);
	for (int i = 0; i < 26; i++)
		printf("%lld%c", O[i], " \n"[i == 25]);
	return 0;
}

Submission Info

Submission Time
Task F - SS
User NiroBC
Language C++14 (GCC 5.4.1)
Score 1100
Code Size 1381 Byte
Status AC
Exec Time 4 ms
Memory 1152 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:19:20: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s", s + 1);
                    ^
./Main.cpp:22:27: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld%lld", &L, &R);
                           ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1100 / 1100
Status
AC × 3
AC × 24
Set Name Test Cases
Sample sample1.txt, sample2.txt, sample3.txt
All mx_100000_1_0.txt, rnd_6_16666_4.txt, rnd_7777_1_0.txt, rnd_7777_1_2289.txt, rnd_7777_1_6444.txt, rnd_7777_9_0.txt, rnd_7777_9_1542.txt, rnd_7777_9_2299.txt, rnd_77_1_0.txt, rnd_77_1_14.txt, rnd_77_1_2.txt, rnd_77_9_0.txt, rnd_77_9_11.txt, rnd_77_9_54.txt, rnd_7_1_0.txt, rnd_7_1_2.txt, rnd_7_1_3.txt, rnd_7_9_0.txt, rnd_7_9_1.txt, rnd_7_9_2.txt, rndmx_100000_1_0.txt, sample1.txt, sample2.txt, sample3.txt
Case Name Status Exec Time Memory
mx_100000_1_0.txt AC 4 ms 1152 KB
rnd_6_16666_4.txt AC 2 ms 1152 KB
rnd_7777_1_0.txt AC 1 ms 256 KB
rnd_7777_1_2289.txt AC 1 ms 256 KB
rnd_7777_1_6444.txt AC 1 ms 384 KB
rnd_7777_9_0.txt AC 2 ms 896 KB
rnd_7777_9_1542.txt AC 2 ms 896 KB
rnd_7777_9_2299.txt AC 2 ms 896 KB
rnd_77_1_0.txt AC 1 ms 128 KB
rnd_77_1_14.txt AC 1 ms 256 KB
rnd_77_1_2.txt AC 1 ms 128 KB
rnd_77_9_0.txt AC 1 ms 128 KB
rnd_77_9_11.txt AC 1 ms 256 KB
rnd_77_9_54.txt AC 1 ms 256 KB
rnd_7_1_0.txt AC 1 ms 128 KB
rnd_7_1_2.txt AC 1 ms 256 KB
rnd_7_1_3.txt AC 1 ms 256 KB
rnd_7_9_0.txt AC 1 ms 128 KB
rnd_7_9_1.txt AC 1 ms 256 KB
rnd_7_9_2.txt AC 1 ms 256 KB
rndmx_100000_1_0.txt AC 4 ms 1152 KB
sample1.txt AC 1 ms 128 KB
sample2.txt AC 1 ms 128 KB
sample3.txt AC 1 ms 256 KB