Submission #520285

#TimeUsernameProblemLanguageResultExecution timeMemory
520285krit3379Palindromic Partitions (CEOI17_palindromic)C++14
100 / 100
244 ms28620 KiB
#include<bits/stdc++.h>
using namespace std;
#define N 1000005

long long hx[N],bp[N],p=31,mod=1e9+7;

long long val(int i,int j){
    return ((hx[j]-hx[i-1]*bp[j-i+1])%mod+mod)%mod;
}

int main(){
    ios_base::sync_with_stdio(false);cin.tie(nullptr);
    int t,n,i,j,ans;
    string s;
    cin>>t;
    bp[0]=1;
    for(i=1;i<N;i++)bp[i]=(bp[i-1]*p)%mod;
    while(t--){
        cin>>s;
        ans=0;
        n=s.length();
        s='0'+s;
        for(i=1;i<=n;i++)hx[i]=0;
        for(i=1;i<=n;i++)hx[i]=(hx[i-1]*p+s[i]-'a'+1)%mod;
        for(i=1,j=1;j<=n/2;j++){
            if(val(i,j)==val(n-j+1,n-i+1)){
                ans+=2;
                i=j+1;
            }
        }
        if(n%2||i!=j)ans++;
        cout<<ans<<endl;
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...