Submission #1226772

#TimeUsernameProblemLanguageResultExecution timeMemory
1226772lukasuliashviliPalindromic Partitions (CEOI17_palindromic)C++20
100 / 100
135 ms10240 KiB
#include<bits/stdc++.h> #define int long long #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; const int mod=1e9+7; const int N=1e6+4; const int X=53; int hshl,hshr,ans,sig,X1[N],srsz,slsz; string sr,sl,s,cal; void calc(int x){ X1[0]=1; X1[1]=x; rep(i,2,1e6){ X1[i]=(X1[i-1]*x)%mod; } } int updatel(int prv,int hsh , char add){ int X2; X2=X1[prv]%mod;//X2=X^prv.size(); hsh = (hsh+X2*((int)add-'a'+1) %mod)%mod; return hsh; } int updater(int prv,int hsh,char add){ hsh = (hsh*X +((int)add-'a'+1))%mod; return hsh; } signed main(){ int t; cin>>t; calc(X); while(t--){ ans=0; sig=0; cin>>s; int l=0; int r=s.size()-1; //updater marjvnidan emateba //updatel marcxnidan emateba srsz=0; slsz=0; hshr=0; hshl=0; while(l<r){ hshr=updatel(srsz,hshr,s[r]); hshl=updater(slsz,hshl,s[l]); srsz++; slsz++; l++; r--; if(hshr!=hshl){ continue; } else{ ans+=2; sig+=srsz*2; srsz=0; slsz=0; hshl=0; hshr=0; } } if(sig!=s.size() ){ ans++; } cout<<ans<<endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...