Submission #244861

#TimeUsernameProblemLanguageResultExecution timeMemory
244861NONAMERima (COCI17_rima)C++14
14 / 140
1092 ms19292 KiB
//#include <bits/stdc++.h> //#define dbg(x) cerr << #x << " = " << x << "\n" //#define fast_io ios_base::sync_with_stdio(0); cin.tie(0); cout.tie() //using namespace std; //using ll = long long; //const int N = 5e5 + 10; //int n, f[N]; //string s[N]; //int main() { //fast_io; //cin >> n; //for (int i = 0; i < n; ++i) //cin >> s[i]; //int ans = 0; //for (int msk = 0; msk < (1 << n); ++msk) { //string t = ""; //for (int i = 0; i < n; ++i) { //} //if (gd) //ans = max(ans, __builtin_popcount(i)); //} //cout << ans << "\n"; //} #include <bits/stdc++.h> #define dbg(x) cerr << #x << " = " << x << "\n" #define fast_io ios_base::sync_with_stdio(0); cin.tie(0); cout.tie() using namespace std; using ll = long long; const int N = 5e5 + 10; int n, f[N]; string s[N]; int main() { fast_io; cin >> n; for (int i = 0; i < n; ++i) cin >> s[i], f[i] = 1; for (int i = 0; i < n; ++i) for (int j = i + 1; j < n; ++j) { int l1 = int(s[i].size()) - 1, l2 = int(s[j].size()) - 1, k = 0; while (l1 >= 0 && l2 >= 0) { if (s[i][l1] != s[j][l2]) break; --l1, --l2; ++k; } if (k == 0) continue; if (k >= max(int(s[i].size()), int(s[j].size())) - 1) f[j] = max(f[j], f[i] + 1); } int ans = 0; for (int i = 0; i < n; ++i) ans = max(ans, f[i]); cout << ans << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...