Submission #47331

#TimeUsernameProblemLanguageResultExecution timeMemory
47331mirbek01회문 (APIO14_palindrome)C++17
0 / 100
1089 ms1900 KiB
# include <bits/stdc++.h> using namespace std; const int N = 1e4 + 2; string s; int n; long long ans, h[N], pw[N], pr = 997, mod = 1e9 + 7; map < pair <int, int> , int> mp; int get(int l, int r){ long long hs = h[r] - h[l - 1] + mod; hs %= mod; hs *= pw[N - r]; return hs % mod; } bool ispal(int l, int r){ return get(l, r) == get(n - r + 1, n - l + 1); } int main(){ pw[0] = pr; for(int i = 1; i < N; i ++) pw[i] = (pw[i - 1] * pr) % mod; cin >> s; n = s.size(); s = ' ' + s; for(int i = 1; i <= n; i ++){ h[i] = (h[i - 1] + s[i] * pw[i]) % mod; } for(int i = 1; i <= n; i ++){ for(int j = i; j <= n; j ++){ if(ispal(i, j)){ mp[{j - i + 1, get(i, j)}] ++; } } } for(auto i : mp){ long long cur = i.first.first * i.second; ans = max(ans, cur); } cout << ans << endl; }
#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...