Submission #100178

#TimeUsernameProblemLanguageResultExecution timeMemory
100178pamajRima (COCI17_rima)C++14
0 / 140
94 ms41676 KiB
#include <bits/stdc++.h> using namespace std; const int maxn = 5e5 + 10; int dp[maxn], n; vector<string> s; bool rhyme(const string& a, const string& b) { int u = (int)a.size() - 1, v = (int)b.size() - 1; int cont = 0; while(a[u] == b[v] and u >= 0 and v >= 0) { cont++, u--, v--; } if(cont >= max((int)a.size(), (int)b.size()) - 1) return true; return false; } int solve(int i, int j) { if(dp[i] != -1) return dp[i]; if(i == n) return 0; int caso1; if(i == j) { caso1 = solve(i + 1, i + 1); } else caso1 = solve(i + 1, j); int caso2; if(rhyme(s[i],s[j])) { caso2 = solve(i + 1, i) + 1; } else caso2 = 0; return dp[i] = max(caso1, caso2); } int main() { ios::sync_with_stdio(false), cin.tie(nullptr); cin >> n; for(int i = 0; i < n; i++) { string a; cin >> a; s.push_back(a); } memset(dp, -1, sizeof(dp)); cout << solve(0, 0) << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...