Submission #68645041


Source Code Expand

#include<bits/stdc++.h>
namespace rgs = std::ranges;
using std::cin, std::cout;
using ll = long long;
using u64 = unsigned long long;
using db = double;
const int N = 100005;
const int mod = 998244353;
const int sig = 26;
int son[N][sig], fail[N], cnt;
int p[N];
int ins(const char * c) {
	int x = 0;
	for(;*c;++c) {
		int & p = son[x][*c - 'a'];
		if(!p) p = ++ cnt;
		x = p;
	}
	return x;
}
void build_ac() {
	std::queue<int> Q;
	for(int i = 0;i < sig;++i) if(son[0][i]) Q.push(son[0][i]);
	for(;Q.size();) {
		int x = Q.front(); Q.pop();
		p[x] |= p[fail[x]];
		for(int i = 0;i < sig;++i)
			if(son[x][i]) fail[son[x][i]] = son[fail[x]][i], Q.push(son[x][i]);
			else son[x][i] = son[fail[x]][i];
	}
}
int dp[1005][100][1 << 8];
void add(int & x, int y) {
	if((x += y) >= mod) {
		x -= mod;
	}
}
int main() {
	std::ios::sync_with_stdio(false), cin.tie(0);
	int n, l;
	cin >> n >> l;
	for(int i = 0;i < n;++i) {
		std::string s;
		cin >> s;
		int id = ins(s.c_str());
		p[id] |= 1 << i;
	}
	build_ac();
	dp[0][0][0] = 1;
	for(int i = 0;i < l;++i) {
		for(int j = 0;j <= cnt;++j) {
			for(int k = 0;k < 1 << n;++k) {
				for(int l = 0;l < 26;++l) {
					add(dp[i + 1][son[j][l]][k | p[son[j][l]]], dp[i][j][k]);
				}
			}
		}
	}
	int ans = 0;
	for(int i = 0;i <= cnt;++i) {
		add(ans, dp[l][i][(1 << n) - 1]);
	}
	cout << ans << '\n';
}

Submission Info

Submission Time
Task F - All Included
User skip2004
Language C++ 20 (gcc 12.2)
Score 550
Code Size 1403 Byte
Status AC
Exec Time 98 ms
Memory 11844 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 550 / 550
Status
AC × 3
AC × 36
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 2 ms 3508 KiB
00_sample_01.txt AC 1 ms 3420 KiB
00_sample_02.txt AC 4 ms 5392 KiB
01_test_00.txt AC 49 ms 7856 KiB
01_test_01.txt AC 74 ms 9732 KiB
01_test_02.txt AC 68 ms 9068 KiB
01_test_03.txt AC 49 ms 7812 KiB
01_test_04.txt AC 86 ms 10720 KiB
01_test_05.txt AC 88 ms 11176 KiB
01_test_06.txt AC 57 ms 8484 KiB
01_test_07.txt AC 87 ms 11040 KiB
01_test_08.txt AC 88 ms 11204 KiB
01_test_09.txt AC 53 ms 8448 KiB
01_test_10.txt AC 79 ms 10868 KiB
01_test_11.txt AC 86 ms 11532 KiB
01_test_12.txt AC 68 ms 9248 KiB
01_test_13.txt AC 78 ms 9840 KiB
01_test_14.txt AC 85 ms 10636 KiB
01_test_15.txt AC 94 ms 11172 KiB
01_test_16.txt AC 85 ms 11256 KiB
01_test_17.txt AC 95 ms 11620 KiB
01_test_18.txt AC 79 ms 11052 KiB
01_test_19.txt AC 87 ms 11652 KiB
01_test_20.txt AC 33 ms 6324 KiB
01_test_21.txt AC 42 ms 7056 KiB
01_test_22.txt AC 37 ms 6788 KiB
01_test_23.txt AC 55 ms 8320 KiB
01_test_24.txt AC 37 ms 6716 KiB
01_test_25.txt AC 44 ms 7436 KiB
01_test_26.txt AC 28 ms 6316 KiB
01_test_27.txt AC 45 ms 7436 KiB
01_test_28.txt AC 1 ms 3556 KiB
01_test_29.txt AC 1 ms 3576 KiB
01_test_30.txt AC 13 ms 4784 KiB
01_test_31.txt AC 98 ms 11844 KiB
01_test_32.txt AC 20 ms 5044 KiB