Submission #845300

#TimeUsernameProblemLanguageResultExecution timeMemory
845300vjudge1Trener (COCI20_trener)C++17
55 / 110
2037 ms18512 KiB
#include <bits/stdc++.h>
using namespace std;
 
#define fast ios::sync_with_stdio(0);cin.tie(0);
#define s second
#define f first
typedef long long ll;
const ll MOD = 1e9 + 7;
const ll LOGN = 20;
const ll MAXN = 3e5 + 5;

vector<vector<string>> play;
map<string,int> dp;

int main() {
	fast
	int N, K;
	cin >> N >> K;

	play = vector<vector<string>>(N+1, vector<string>());
	for (int i = 1; i <= N; i++) {
		for (int j = 0; j < K; j++) {
			string s;
			cin >> s;
			play[i].push_back(s);
		}
	}

	for (int i = 0; i < play[N].size(); i++)
		dp[play[N][i]]++;

	for (int i = N-1; i >= 1; i--) {
		map<string,int> new_dp;
		for (int s1 = 0; s1 < play[i].size(); s1++) {
			for (char ch = 'a'; ch <= 'z'; ch++) {
				string str1 = play[i][s1];
				new_dp[str1] = (new_dp[str1] + dp[str1 + ch]) % MOD;
				if (str1 + ch != ch + str1)
					new_dp[str1] = (new_dp[str1] + dp[ch + str1]) % MOD;
			}
		}
		dp = new_dp;
	}

	int ans = 0;
	for (auto u : dp)
		ans = (ans + u.s) % MOD;
	cout << ans << "\n";
}

Compilation message (stderr)

trener.cpp: In function 'int main()':
trener.cpp:29:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::__cxx11::basic_string<char> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |  for (int i = 0; i < play[N].size(); i++)
      |                  ~~^~~~~~~~~~~~~~~~
trener.cpp:34:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::__cxx11::basic_string<char> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |   for (int s1 = 0; s1 < play[i].size(); s1++) {
      |                    ~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...