Submission #41623

#TimeUsernameProblemLanguageResultExecution timeMemory
41623funcsrPalindromes (APIO14_palindrome)C++14
0 / 100
2 ms452 KiB
#include <iostream> #include <vector> #include <string> #include <algorithm> #include <cassert> #include <map> using namespace std; #define int long long typedef pair<int, int> P; #define rep(i, n) for (int i=0; i<(n); i++) #define all(x) x.begin(), x.end() #define uniq(x) x.erase(unique(all(x)), x.end()) #define index(x, y) (int)(lower_bound(all(x), y) - x.begin()) #define _1 first #define _2 second #define pb push_back #define MOD 1000000007 const int B = 123; string S; int N; map<int, int> C[300001]; int HL[3000][3000], HR[3000][3000]; signed main() { cin >> S; N = S.length(); rep(l, N) { int h = 0; for (int r=l; r<N; r++) HL[l][r] = h = (h*B+S[r])%MOD; } rep(r, N) { int h = 0; for (int l=r; l>=0; l--) HR[l][r] = h = (h*B+S[l])%MOD; } rep(r, N) rep(l, r+1) { if (HL[l][r] == HR[l][r]) C[r-l+1][HL[l][r]]++; } long long m = 0; for (int len=1; len<=N; len++) { for (auto p : C[len]) { m = max(m, 1LL*len*p._2); } } cout << m << "\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...