Submission #1166397

#TimeUsernameProblemLanguageResultExecution timeMemory
1166397MuhammetPalindromes (APIO14_palindrome)C++20
47 / 100
1093 ms2288 KiB
#include "bits/stdc++.h" using namespace std; #define ll long long #define SZ(s) (ll)s.size() #define ff first #define ss second int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); string s; cin >> s; int n = SZ(s); ll ans = 1; vector <pair <int, int>> vk; vector <vector <pair <int, int>>> v, v1; for(int c = 'a'; c <= 'z'; c++) { v.clear(); v.resize(1); for(int i = 0; i < n; i++) { if(s[i] == char(c)) v[0].push_back({i, i}); } v1.clear(); ll cnt = 1; vector <int> vis(27); while(SZ(v)) { int nd = -1; for(int vi = 0; vi < SZ(v); vi++) { vector < pair <int, int>> vv = v[vi]; ans = max(ans, cnt * SZ(vv)); vis.assign(26, -1); for(auto [l, r] : vv) { if(l == 0 or r == n-1) continue; if(s[--l] != s[++r]) continue; if(vis[int(s[l]-'a')] == -1) { vk = {{l, r}}; v1.push_back(vk); vis[int(s[l]-'a')] = ++nd; } else { v1[vis[int(s[l]-'a')]].push_back({l, r}); } } } v.clear(); v = v1; v1.clear(); cnt += 2; } } for(int c = 'a'; c <= 'z'; c++) { v.clear(); v.resize(1); for(int i = 0; i < n-1; i++) { if(s[i] == char(c) and s[i+1] == char(c)) v[0].push_back({i, i+1}); } v1.clear(); ll cnt = 2; vector <int> vis(27); while(SZ(v)) { int nd = -1; for(auto vv : v) { ans = max(ans, cnt * SZ(vv)); vis.assign(26, -1); for(auto [l, r] : vv) { if(l == 0 or r == n-1) continue; if(s[--l] != s[++r]) continue; if(vis[int(s[l]-'a')] == -1) { vk = {{l, r}}; v1.push_back(vk); vis[int(s[l]-'a')] = ++nd; } else { v1[vis[int(s[l]-'a')]].push_back({l, r}); } } } v.clear(); v = v1; v1.clear(); cnt += 2; } } cout << ans; 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...