Submission #1092816

# Submission time Handle Problem Language Result Execution time Memory
1092816 2024-09-25T07:52:10 Z owoovo Palindromic Partitions (CEOI17_palindromic) C++17
100 / 100
433 ms 20776 KB
#include<bits/stdc++.h>
#define ll long long
#define F first 
#define S second 
using namespace std;
const ll p=1e9+7;
const ll c=47;
ll hah[1000010];
ll pw(ll a,ll b){
    ll ans=1;
    while(b){
        if(b&1)ans*=a,ans%=p;
        b>>=1;
        a*=a;
        a%=p;
    }
    return ans;
}
ll hh(int l,int r){
    return ((hah[r]-hah[l-1]*pw(c,r-l+1)%p)%p+p)%p;
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    int t;
    cin>>t;
    while(t--){
        string s;
        cin>>s;
        int n=s.size();
        for(int i=1;i<=n;i++){
            char ch=s[i-1];
            ll val=int(ch-'a')+3;
            hah[i]=hah[i-1]*c+val;
            hah[i]%=p;
        }
        int l=1,r=n,i=0,ans=0;
        while(l<=r){
            while(l+i<=r&&hh(l,l+i)!=hh(r-i,r)){
                i++;
            }
            ans+=2;
            if(l+i==r)ans--;
            l=l+i+1,r=r-i-1,i=0;
        }
        cout<<ans<<'\n';
    }
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 1 ms 344 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 1 ms 344 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 464 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 1 ms 344 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 464 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 3 ms 604 KB Output is correct
11 Correct 3 ms 604 KB Output is correct
12 Correct 3 ms 604 KB Output is correct
13 Correct 2 ms 624 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 1 ms 344 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 464 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 3 ms 604 KB Output is correct
11 Correct 3 ms 604 KB Output is correct
12 Correct 3 ms 604 KB Output is correct
13 Correct 2 ms 624 KB Output is correct
14 Correct 433 ms 20776 KB Output is correct
15 Correct 416 ms 15676 KB Output is correct
16 Correct 380 ms 19664 KB Output is correct
17 Correct 84 ms 11104 KB Output is correct