Submission #1170864

#TimeUsernameProblemLanguageResultExecution timeMemory
1170864AlgorithmWarriorPalindromic Partitions (CEOI17_palindromic)C++20
100 / 100
222 ms9032 KiB
#include <bits/stdc++.h> using namespace std; int const BASE=31; int const MOD=1e9+7; int const MAX=1e6+5; int hashes[MAX]; char sir[MAX]; int n; int basepow[MAX]; void precalc(){ basepow[0]=1; int i; for(i=1;i<MAX;++i) basepow[i]=1LL*BASE*basepow[i-1]%MOD; } void read(){ cin.getline(sir+1,MAX); n=strlen(sir+1); int i; for(i=1;i<=n;++i) hashes[i]=(1LL*BASE*hashes[i-1]%MOD+sir[i]-'a'+1)%MOD; } int hashy(int l,int r){ return (hashes[r]-1LL*hashes[l-1]*basepow[r-l+1]%MOD+MOD)%MOD; } int solve(int st,int dr){ if(st>dr) return 0; int l=st,r=dr; for(;l<r;++l,--r) if(hashy(st,l)==hashy(r,dr)) return 2+solve(l+1,r-1); return 1; } int main() { precalc(); int testcases; cin>>testcases; cin.get(); while(testcases--){ read(); cout<<solve(1,n)<<'\n'; } 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...