Submission #244844

#TimeUsernameProblemLanguageResultExecution timeMemory
244844VEGAnnRima (COCI17_rima)C++14
14 / 140
1090 ms19284 KiB
#include <bits/stdc++.h> #define all(x) x.begin(),x.end() #define sz(x) ((int)x.size()) using namespace std; const int N = 500100; string s[N]; int n, ans = 0, f[N]; bool ok(int i, int j){ int ned = max(sz(s[i]), sz(s[j])) - 1; int lf = 0; while (lf < min(sz(s[i]), sz(s[j])) && s[i][lf] == s[j][lf]) lf++; return bool(lf >= ned); } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); #ifdef _LOCAL freopen("in.txt","r",stdin); #endif // _LOCAL cin >> n; for (int i = 0; i < n; i++){ cin >> s[i]; reverse(all(s[i])); } sort(s, s + n); for (int i = 0; i < n; i++){ f[i] = max(f[i], 1); ans = max(ans, f[i]); for (int j = i + 1; j < n; j++) if (ok(i, j)) f[j] = max(f[j], f[i] + 1); } cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...