# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
48004 | E869120 | Palindromes (APIO14_palindrome) | C++14 | 1080 ms | 68344 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
bool pal(string S) {
string T = S; reverse(T.begin(), T.end());
if (S == T) return true;
return false;
}
string S; vector<long long>A; map<long long, int>M; int maxn = 0;
long long rem[100009], power[100009];
void init() {
power[0] = 1; for (int i = 1; i < 100009; i++) power[i] = power[i - 1] * 31LL;
for (int i = 1; i <= S.size(); i++) {
rem[i] = rem[i - 1] * 31LL;
rem[i] += (S[i - 1] - 'a' + 1);
}
}
long long hash_value(long long l, long long r) {
return rem[r] - rem[l] * power[r - l];
}
int main() {
cin >> S; init();
for (int i = 0; i < S.size(); i++) {
int L = i, R = i;
while (L >= 0 && R < S.size()) {
if (S[L] != S[R]) break;
long long J = hash_value(L, R + 1);
M[J] += (R - L + 1); A.push_back(J);
L--; R++;
}
L = i; R = i + 1;
while (L >= 0 && R < S.size()) {
if (S[L] != S[R]) break;
long long J = hash_value(L, R + 1);
M[J] += (R - L + 1); A.push_back(J);
L--; R++;
}
}
for (int i = 0; i < A.size(); i++) maxn = max(maxn, M[A[i]]);
cout << maxn << endl;
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |