Submission #73356

#TimeUsernameProblemLanguageResultExecution timeMemory
73356VardanyanPalindromes (APIO14_palindrome)C++14
0 / 100
1074 ms8216 KiB
//#pragma GCC optimize "-O3" #include <bits/stdc++.h> using namespace std; const int N = 3000*100+7; long long h1[N],h2[N]; long long p[N]; int n; long long hashcode1(int l,int r){ return (h1[r]-h1[l-1])*p[n-l+1]; } long long hashcode2(int l,int r){ return (h2[r]-h2[l-1])*p[n-l+1]; } int main() { string s; cin>>s; n = s.length(); p[0] = 1; for(int i = 1;i<=n;i++) p[i] = p[i-1]*259; string srev = s; reverse(srev.begin(),srev.end()); for(int i = 1;i<=n;i++){ h1[i] = h1[i-1]+(s[i-1]-'0')*259; h2[i] = h2[i-1]+(srev[i-1]-'0')*259; } unordered_map<long long,int> mp; int ans = 0; for(int i = 1;i<=n;i++){ for(int j = i;j<=n;j++){ int x = hashcode1(i,j); int jj = n-i+1; int ii = n-j+1; int y = hashcode2(ii,jj); if(x == y){ mp[x]++; ans = max(ans,(j-i+1)*mp[x]); } } } cout<<ans<<endl; 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...