Submission #66768

#TimeUsernameProblemLanguageResultExecution timeMemory
66768AbelyanPalindromic Partitions (CEOI17_palindromic)C++17
100 / 100
53 ms5036 KiB
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

typedef long long ll;
const int N = 100006;
const long long INF = (ll)1000000000000000007;
const ll P = 13084673;


void solve() {
	string s;
	cin >> s;
	int i = 0, j = s.length() - 1, ans = 0;
	ll hash1 = 0, hash2 = 0, pw = 1;
	while (i < j) {
		hash1 += (ll)(s[i] - 'a' + 1)*pw;
		hash2 = hash2*P + (ll)(s[j] - 'a' + 1);
		//cout << hash1 << " " << hash2 << endl;
		pw *= P;
		i++;
		j--;
		if (hash1 == hash2) {
			ans += 2;
			pw = 1;
			hash2 = 0;
			hash1 = 0;
		}
	}
	if (pw == 1 && i==j+1)
		cout << ans << endl;
	else
		cout << ans + 1 << endl;
}

int main()
{
	ios_base::sync_with_stdio(false);
	int T;
	cin >> T;
	while (T--) {
		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...