Submission #1211549

#TimeUsernameProblemLanguageResultExecution timeMemory
1211549vukhacminhPalindromic Partitions (CEOI17_palindromic)C++20
100 / 100
99 ms19568 KiB
/** * Author : Vu Khac Minh **/ #include <bits/stdc++.h> #define ll long long using namespace std; const int maxn = 1e6 + 5; const int mod = 1e9+7; const int base = 31; ll Hash[maxn],Pow[maxn],n,rHash[maxn]; ll gethash(int l,int r) { return (Hash[r] - Hash[l-1] * Pow[r-l+1]%mod + mod)%mod; } int calc(int l,int r) { for(int len = 1;2*len<=r-l+1;len++) if(gethash(l,l+len-1) == gethash(r-len+1,r)) return 2 + calc(l+len,r-len); return (l<=r); } string s; void solve() { cin>>s; n = s.length(); s = ' ' + s; for(int i =1;i<=n;i++) Hash[i] = (Hash[i-1] *base + s[i] - 'a')%mod; cout<<calc(1,n)<<'\n'; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int ntest; cin>>ntest; Pow[0] = 1; for(int i =1;i<maxn;i++) Pow[i] = Pow[i-1] * base%mod; while(ntest--) solve(); 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...