Submission #928681

# Submission time Handle Problem Language Result Execution time Memory
928681 2024-02-17T01:47:12 Z Regulus Palindromic Partitions (CEOI17_palindromic) C++17
100 / 100
190 ms 19604 KB
#include <bits/stdc++.h>
#define IO ios::sync_with_stdio(false);cin.tie(0);
#define debug(x) cerr << #x << " = " << (x) << ' '
#define bug(x) cerr << (x) << ' '
#define endl cerr << '\n'
#define all(v) (v).begin(), (v).end()
#define SZ(v) (ll)(v).size()
#define lowbit(x) (x)&-(x)
#define pb emplace_back
#define F first
#define S second
using namespace std;
using ll = long long;
using pll = pair<ll, ll>;

const int N = 1e6+5;
const int MOD = 19993;
const int MOD2 = 1e9+7;
ll sum[N], p[N];
string s;

int main(void)
{ IO
    int T, n, i;

    cin >> T;
    do {
        cin >> s, n = SZ(s);
        s = " " + s;
        for (i=1; i <= n; ++i)
            sum[i] = (sum[i-1] * MOD % MOD2 + s[i]) % MOD2;
        for (i=1, p[0]=1; i <= n; ++i) p[i] = p[i-1] * MOD % MOD2;

        //for (i=1; i <= n; ++i) bug(sum[i]); endl;
        int ans = 0, L = 1, R = n;
        while (L <= R)
        {
            for (i=0; i < n; ++i)
            {
                ll tmp = (sum[L+i] - (sum[L-1] * p[i+1] % MOD2) + MOD2) % MOD2;
                ll tmp2 = (sum[R] - (sum[R-i-1] * p[i+1] % MOD2) + MOD2) % MOD2;
                //debug(tmp), debug(tmp2), endl;
                if (tmp == tmp2) break;
            }
            if (R-L == i) ++ans;
            else ans += 2;
            //debug(L), debug(R), debug(i), endl;
            L += i + 1, R -= i + 1;
        }

        cout << ans << '\n';
    } while (--T);

    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 3 ms 600 KB Output is correct
11 Correct 1 ms 856 KB Output is correct
12 Correct 2 ms 604 KB Output is correct
13 Correct 2 ms 604 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 3 ms 600 KB Output is correct
11 Correct 1 ms 856 KB Output is correct
12 Correct 2 ms 604 KB Output is correct
13 Correct 2 ms 604 KB Output is correct
14 Correct 190 ms 18100 KB Output is correct
15 Correct 101 ms 17880 KB Output is correct
16 Correct 173 ms 19604 KB Output is correct
17 Correct 97 ms 10444 KB Output is correct