Submission #41624

#TimeUsernameProblemLanguageResultExecution timeMemory
41624funcsrPalindromes (APIO14_palindrome)C++14
23 / 100
41 ms30064 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[1000][1000], HR[1000][1000]; signed main() { cin >> S; N = S.length(); assert(N <= 1000); 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...