제출 #1166197

#제출 시각아이디문제언어결과실행 시간메모리
1166197Muhammet회문 (APIO14_palindrome)C++20
0 / 100
0 ms328 KiB
#include "bits/stdc++.h" using namespace std; #define ll long long #define SZ(s) (ll)s.size() 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(); // cout << char (c) << '\n'; ll cnt = 1; vector <int> vis(27); while(SZ(v)) { v1.clear(); // cout << cnt << '\n'; for(auto vv : v) { // cout << SZ(vv) << ' '; ans = max(ans, cnt * SZ(vv)); int nd = -1; for(int i = 0; i < 26; i++) { vis[i] = -1; } for(auto [l, r] : vv) { if(l == 0 or r == n-1) continue; if(s[--l] != s[++r]) continue; if(vis[s[l]-'a'] == -1) { vk = {{l, r}}; v1.push_back(vk); vis[s[l]-'a'] = ++nd; } else { v1[vis[s[l]-'a']].push_back({l, r}); } } } v = v1; cnt += 2; // cout << '\n'; } } 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}); } // cout << char (c) << '\n'; v1.clear(); ll cnt = 2; vector <int> vis(27); while(SZ(v)) { v1.clear(); // cout << cnt << '\n'; for(auto vv : v) { // cout << SZ(vv) << ' '; ans = max(ans, cnt * SZ(vv)); int nd = -1; for(int i = 0; i < 26; i++) { vis[i] = -1; } for(auto [l, r] : vv) { if(l == 0 or r == n-1) continue; if(s[--l] != s[++r]) continue; if(vis[s[l]-'a'] == -1) { vk = {{l, r}}; v1.push_back(vk); vis[s[l]-'a'] = ++nd; } else { v1[vis[s[l]-'a']].push_back({l, r}); } } } v = v1; cnt += 2; // cout << '\n'; } } 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...