Submission #486790

#TimeUsernameProblemLanguageResultExecution timeMemory
486790mahdavifarPalindromic Partitions (CEOI17_palindromic)C++14
100 / 100
237 ms20092 KiB
#include <bits/stdc++.h> using namespace std; const int maxn = 1000005; const long long m = 1000000007; const long long p = 999999893; long long power[maxn] = {}; int main() { // preprocess power[0] = 1; for (int i = 1; i < maxn; i++) power[i] = (power[i-1] * p) % m; // get number of test cases int T; cin >> T; // solve test cases for (int t = 0; t < T; t++) { string s; cin >> s; int n = s.length(); int base = 0, ans = 0; long long hash1 = 0, hash2 = 0; for( int i=0, j=n-1; i < n-i; i++, j--) { hash1 = (hash1 + s[i] * power[i]) % m; hash2 = (hash2 + s[j] * power[j]) % m; if ((hash1 * power[j-base]) % m == hash2) { ans += 2 - (i == j); hash1 = hash2 = 0; base = i + 1; } } if (hash1 != 0) ans += 1; 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...