| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 707795 | TAhmed33 | Mate (COCI18_mate) | C++98 | 2100 ms | 17104 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
