Submission #1086423

# Submission time Handle Problem Language Result Execution time Memory
1086423 2024-09-10T14:51:36 Z serifefedartar Palindromic Partitions (CEOI17_palindromic) C++17
100 / 100
749 ms 20612 KB
#include <bits/stdc++.h>
using namespace std;
 
#define fast ios::sync_with_stdio(0);cin.tie(0)
typedef long long ll;
#define f first
#define s second
#define LOGN 21
const ll MOD = 1e9 + 7;
const ll MAXN = 1e6 + 100;

const ll P = 31;
const ll MD = 1e9 + 9;

ll expo(ll A, ll B) {
    ll res = 1;
    while (B) {
        if (B & 1)
            res = (res * A) % MD;
        A = (A * A) % MD;
        B /= 2;
    }
    return res;
}

ll hh[MAXN];
ll f(int l, int r) {
    return (hh[r] - hh[l-1] * expo(P, r - l + 1) % MD + MD) % MD;
}

void solve() {
    string S;
    cin >> S;

    int N = S.length();
    S = "#" + S;
    for (int i = 1; i <= N; i++)
        hh[i] = (hh[i-1] * P + (S[i] - 'a' + 1)) % MD;

    bool check = true;
    int cnt = 0;
    for (int l = 1, r = 1; l <= N; ) {
        while (f(l, r) != f(N - r + 1, N - l + 1) && r <= N)
            r++;

        cnt++;
        if (r > N)
            check = false;
        l = r + 1;
        r = r + 1;
    }

    if (check)
        cout << cnt << "\n";
    else
        cout << "-1\n";
}

int main() {
    fast;
    int t;
    cin >> t;
    while (t--) {
        solve();
    }
}
# 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 464 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 464 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 464 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 5 ms 604 KB Output is correct
11 Correct 5 ms 600 KB Output is correct
12 Correct 5 ms 604 KB Output is correct
13 Correct 2 ms 636 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 464 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 5 ms 604 KB Output is correct
11 Correct 5 ms 600 KB Output is correct
12 Correct 5 ms 604 KB Output is correct
13 Correct 2 ms 636 KB Output is correct
14 Correct 749 ms 20612 KB Output is correct
15 Correct 727 ms 15564 KB Output is correct
16 Correct 702 ms 19628 KB Output is correct
17 Correct 120 ms 11128 KB Output is correct