제출 #1166080

#제출 시각아이디문제언어결과실행 시간메모리
1166080JelalTkm회문 (APIO14_palindrome)C++20
8 / 100
183 ms148288 KiB
#include <bits/stdc++.h> #pragma GCC optimize ("O3") #pragma GCC target ("sse4") using namespace std; #define int long long int const int N = 1e5 + 10; const int md = 1e9 + 7; const int INF = 1e18; int32_t main(int32_t argc, char *argv[]) { ios::sync_with_stdio(false); cin.tie(nullptr); int T = 1; // cin >> T; while (T--) { string s; cin >> s; int n = (int) s.size(); s = '#' + s; unordered_map<string, int> mp; for (int i = 1; i <= n; i++) { string c = ""; for (int j = i; j <= n; j++) { c += s[j]; mp[c]++; } } vector<vector<bool>> dp(n + 1, vector<bool> (n + 1)); vector<int> sz(n + 1); for (int i = 1; i <= n; i++) { dp[i][i] = 1; sz[i] = 1; for (int j = i - 1; j >= 1; j--) { if (j == i - 1) { if (s[j] == s[i]) { sz[j] = 2; dp[j][i] = 1; } } else if (s[i] == s[j] && dp[j + 1][i - 1]) { sz[j] = (i - j + 1); dp[j][i] = 1; } } } int ans = 0; for (int i = 1; i <= n; i++) { string c = ""; for (int j = i; j < sz[i] + i; j++) c += s[j]; ans = max(ans, sz[i] * mp[c]); } cout << ans << '\n'; } 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...