Submission #238627

#TimeUsernameProblemLanguageResultExecution timeMemory
238627SamAndTrener (COCI20_trener)C++17
110 / 110
172 ms97016 KiB
#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 (stderr)

trener.cpp: In function 'void solv()':
trener.cpp:22:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &n, &k);
     ~~~~~^~~~~~~~~~~~~~~~
trener.cpp:28:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf(" %s", a);
             ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...