Submission #235863

# Submission time Handle Problem Language Result Execution time Memory
235863 2020-05-30T08:24:09 Z balbit Palindromes (APIO14_palindrome) C++14
23 / 100
1000 ms 8648 KB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define pii pair<int, int>
#define f first
#define s second

#define REP(i,n) for (int i = 0; i<n; ++i)
#ifdef BALBIT
#define bug(...) cerr<<"#"<<__LINE__<<": "<<#__VA_ARGS__<<": ", _do(__VA_ARGS__)
template<typename T> void _do(T && x){cerr<<x<<endl;}
template<typename T, typename ...S> void _do(T && x, S&&...y){cerr<<x<<", "; _do(y...);}
#define IOS()
#else
#define IOS() ios::sync_with_stdio(0), cin.tie(0)
#define endl '\n'
#define bug(...)
#endif // BALBIT

#define SZ(x) (int)(x.size())
#define ALL(x) (x).begin(), (x).end()
#define pb push_back

const int B = 37;
const ll mod = 1e9+87;
const int maxn = 3e5;
ll hv[maxn];
ll pB[maxn], ipB[maxn];

ll inv(ll b) {
    if (b == 1)return 1;
    return inv(mod%b) * (mod-mod/b) % mod;
}

signed main(){
    IOS();

    unordered_map <ll, ll> mp;
    string s;cin>>s;
    int n = SZ(s);
    pB[0] = ipB[0] = 1;
    for (int i = 1; i<=n; ++i) {
        pB[i] = pB[i-1] * B % mod;
        ipB[i] = inv(pB[i]);
    }
    bug(pB[2] * ipB[2] % mod);
    for (int i = 0; i<n; ++i) {
        hv[i+1] = hv[i] + pB[i] * (s[i] - 'a'+1); hv[i+1] %= mod;

    }

    for (int i = 0; i<n; ++i) {
        for (int j = 0; i-j>=0 && i+j < n && s[i-j] == s[i+j]; ++j) {
            mp[ (hv[i+j+1] - hv[i-j] + mod) % mod * ipB[i-j] % mod] += (j*2+1);
        }
        for (int j = 0; i-j>=0 && i+j+1 < n && s[i-j] == s[i+j+1]; ++j) {
            mp[ (hv[i+j+1+1] - hv[i-j] + mod) % mod * ipB[i-j]  % mod] += (j*2+2);
            bug(j*2+2, (hv[i+j+1+1] - hv[i-j] + mod) % mod * ipB[i-j] % mod);
        }
    }
    ll re = 0;
    for (auto x : mp) {
        re = max(re, x.s);
    }
    cout<<re<<endl;

}
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 4 ms 384 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
6 Correct 5 ms 384 KB Output is correct
7 Correct 4 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Correct 5 ms 384 KB Output is correct
10 Correct 5 ms 384 KB Output is correct
11 Correct 5 ms 384 KB Output is correct
12 Correct 5 ms 384 KB Output is correct
13 Correct 5 ms 384 KB Output is correct
14 Correct 5 ms 384 KB Output is correct
15 Correct 5 ms 384 KB Output is correct
16 Correct 5 ms 384 KB Output is correct
17 Correct 5 ms 384 KB Output is correct
18 Correct 5 ms 384 KB Output is correct
19 Correct 5 ms 384 KB Output is correct
20 Correct 5 ms 384 KB Output is correct
21 Correct 5 ms 384 KB Output is correct
22 Correct 4 ms 384 KB Output is correct
23 Correct 5 ms 384 KB Output is correct
24 Correct 5 ms 384 KB Output is correct
25 Correct 5 ms 384 KB Output is correct
26 Correct 5 ms 384 KB Output is correct
27 Correct 5 ms 384 KB Output is correct
28 Correct 5 ms 384 KB Output is correct
29 Correct 5 ms 384 KB Output is correct
30 Correct 5 ms 384 KB Output is correct
31 Correct 5 ms 384 KB Output is correct
32 Correct 5 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 13 ms 384 KB Output is correct
2 Correct 8 ms 384 KB Output is correct
3 Correct 22 ms 600 KB Output is correct
4 Correct 6 ms 384 KB Output is correct
5 Correct 21 ms 384 KB Output is correct
6 Correct 21 ms 384 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 14 ms 384 KB Output is correct
9 Correct 5 ms 384 KB Output is correct
10 Correct 5 ms 384 KB Output is correct
11 Correct 5 ms 384 KB Output is correct
12 Correct 5 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1059 ms 1116 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1097 ms 3704 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1088 ms 8648 KB Time limit exceeded
2 Halted 0 ms 0 KB -