Submission #707795

#TimeUsernameProblemLanguageResultExecution timeMemory
707795TAhmed33Mate (COCI18_mate)C++98
80 / 100
2100 ms17104 KiB
#include <bits/stdc++.h> using namespace std; vector <int> arr; int n; int dp[2001][26][26] = {}; const int MOD = 1e9 + 7; int ncr[2001][2001]; int main () { ios::sync_with_stdio(false); cin.tie(0); string s; cin >> s; n = s.length(); for (int i = 0; i <= n; i++) { for (int j = 0; j <= n; j++) { if (j == 0 || j == i) { ncr[i][j] = 1; } else if (i < j) { ncr[i][j] = 0; } else { ncr[i][j] = ncr[i - 1][j] + ncr[i - 1][j - 1]; if (ncr[i][j] >= MOD) ncr[i][j] -= MOD; } } } arr.push_back(8); for (auto i : s) arr.push_back(i - 'a'); for (int i = 1; i <= n - 1; i++) { for (int j = i + 1; j <= n; j++) { for (int k = 2; k <= i + 1; k++) { dp[k][arr[i]][arr[j]] += ncr[i - 1][i + 1 - k]; if (dp[k][arr[i]][arr[j]] >= MOD) dp[k][arr[i]][arr[j]] -= MOD; } } } int q; cin >> q; while (q--) { int d; char a, b; cin >> d >> a >> b; int x = a - 'a'; int y = b - 'a'; cout << dp[d][x][y] << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...