Submission #380105

#TimeUsernameProblemLanguageResultExecution timeMemory
380105alradSavez (COCI15_savez)C++17
108 / 120
115 ms17516 KiB
#include <bits/stdc++.h> using namespace std; using ull = unsigned long long; using ll = long long; /* #pragma comment(linker, "/STACK:256000000") #pragma GCC optimize("unroll-loops") #pragma GCC optimize("Ofast") #pragma GCC optimize("-O3") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") */ template <class T> inline T gcd(T a , T b) { return !a ? b : gcd(b % a , a); } template <class T> inline T lcm(T a , T b) { return (a * b) / gcd(a , b) ; } mt19937 rnd(time(0)); #define all(x) x.begin(), x.end() #define debug(x) { cerr << #x << " = " << x << endl; } const int N = 2e6 + 1; const int ALPHA = 26; int dp[N]; struct node { node *next[ALPHA]; int id; node() { for (int i = 0; i < ALPHA; i++) { next[i] = nullptr; } id = -1; } }; node *root = new node(); void add(const string s, int cur) { node *v = root; for (char c : s) { int to = int(c - 'A'); if (v->next[to] == nullptr) { v->next[to] = new node(); } v = v->next[to]; } if (v->id == -1 || (dp[cur] > dp[v->id])) { v->id = cur; } return; } int ask(const string s) { int ans = 0; string rev = s; reverse(all(rev)); node *v = root; for (int i = 0; i < (int)s.size(); i++) { if (s[i] != rev[i]) { return ans; } int to = int(s[i] - 'A'); if (v->next[to] == nullptr) { return ans; } v = v->next[to]; if (v->id != -1) { ans = max(ans, dp[v->id]); } } return ans; } void solve() { int n; cin >> n; int res = 0; for (int i = 0; i < n; i++) { string s; cin >> s; dp[i] = ask(s) + 1; res = max(res, dp[i]); add(s, i); } cout << res << '\n'; return; } signed main() { ios_base :: sync_with_stdio(0); cin.tie(0) , cout.tie(0); int t = 1; while (t--) { solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...