# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
238627 | 2020-06-12T08:23:56 Z | SamAnd | Trener (COCI20_trener) | C++17 | 172 ms | 97016 KB |
#include <bits/stdc++.h> using namespace std; #define m_p make_pair #define all(x) (x).begin(),(x).end() #define sz(x) ((int)(x).size()) #define fi first #define se second typedef long long ll; mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count()); mt19937 rnf(2106); const int N = 55, K = 1503, M = 1000000007; int n, k; char a[N]; int z; int t[N * K * N * 3][26]; int q[N * K * N]; void solv() { scanf("%d%d", &n, &k); int ans = 0; for (int d = 1; d <= n; ++d) { for (int ii = 0; ii < k; ++ii) { scanf(" %s", a); int pos1 = 0; for (int i = 0; i < d - 1; ++i) { if (!t[pos1][a[i] - 'a']) t[pos1][a[i] - 'a'] = ++z; pos1 = t[pos1][a[i] - 'a']; } int pos2 = 0; for (int i = 1; i < d; ++i) { if (!t[pos2][a[i] - 'a']) t[pos2][a[i] - 'a'] = ++z; pos2 = t[pos2][a[i] - 'a']; } int yans = 0; yans = (yans + q[pos1]) % M; if (pos1 != pos2) yans = (yans + q[pos2]) % M; if (d == 1) yans = 1; if (d == n) ans = (ans + yans) % M; int pos = 0; for (int i = 0; i < d; ++i) { if (!t[pos][a[i] - 'a']) t[pos][a[i] - 'a'] = ++z; pos = t[pos][a[i] - 'a']; } q[pos] = (q[pos] + yans) % M; } } printf("%d\n", ans); } int main() { #ifdef SOMETHING freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); #endif // SOMETHING //ios_base::sync_with_stdio(false), cin.tie(0); solv(); return 0; } //while ((double)clock() / CLOCKS_PER_SEC <= 0.9){}
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 384 KB | Output is correct |
2 | Correct | 4 ms | 384 KB | Output is correct |
3 | Correct | 5 ms | 384 KB | Output is correct |
4 | Correct | 5 ms | 384 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 13 ms | 7168 KB | Output is correct |
2 | Correct | 13 ms | 7040 KB | Output is correct |
3 | Correct | 12 ms | 7168 KB | Output is correct |
4 | Correct | 7 ms | 512 KB | Output is correct |
5 | Correct | 10 ms | 3328 KB | Output is correct |
6 | Correct | 10 ms | 3584 KB | Output is correct |
7 | Correct | 8 ms | 768 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 384 KB | Output is correct |
2 | Correct | 4 ms | 384 KB | Output is correct |
3 | Correct | 5 ms | 384 KB | Output is correct |
4 | Correct | 5 ms | 384 KB | Output is correct |
5 | Correct | 13 ms | 7168 KB | Output is correct |
6 | Correct | 13 ms | 7040 KB | Output is correct |
7 | Correct | 12 ms | 7168 KB | Output is correct |
8 | Correct | 7 ms | 512 KB | Output is correct |
9 | Correct | 10 ms | 3328 KB | Output is correct |
10 | Correct | 10 ms | 3584 KB | Output is correct |
11 | Correct | 8 ms | 768 KB | Output is correct |
12 | Correct | 145 ms | 96448 KB | Output is correct |
13 | Correct | 172 ms | 96760 KB | Output is correct |
14 | Correct | 157 ms | 97016 KB | Output is correct |
15 | Correct | 170 ms | 96928 KB | Output is correct |
16 | Correct | 45 ms | 1528 KB | Output is correct |
17 | Correct | 135 ms | 36388 KB | Output is correct |
18 | Correct | 118 ms | 37316 KB | Output is correct |
19 | Correct | 107 ms | 37240 KB | Output is correct |
20 | Correct | 109 ms | 37368 KB | Output is correct |
21 | Correct | 105 ms | 36988 KB | Output is correct |
22 | Correct | 42 ms | 1528 KB | Output is correct |