Submission #1026972

# Submission time Handle Problem Language Result Execution time Memory
1026972 2024-07-18T15:52:35 Z mnbvcxz123 Palindromic Partitions (CEOI17_palindromic) C++17
100 / 100
147 ms 12136 KB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

const ll P = 69421;
const ll M = 1e9 + 9;

int main() {
	int tc;
	cin >> tc;
	while (tc--) {
		string s;
		cin >> s;

		int n = s.length();
		int ans = 0;
		int found = 0;  // -1 if no further strings can be found on both side
		int start = 0;  // index we start searching from

		while (found != -1) {
			ll hash_left = 0, hash_right = 0;
			found = -1;
			for (ll l = start, pw = 1; l < n / 2; l++, pw = (pw * P % M)) {
				hash_left = (hash_left * P + s[l]) % M;
				hash_right = (hash_right + pw * s[n - 1 - l]) % M;
				if (hash_left == hash_right) {
					found = l;
					break;
				}
			}

			if (found != -1) {
				start = found + 1;
				ans += 2;
			}
		}

		if (start * 2 == n) {
			cout << ans << endl;
		} else {
			cout << ans + 1 << endl;
		}
	}
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 2 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 2 ms 348 KB Output is correct
13 Correct 2 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 2 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 2 ms 348 KB Output is correct
13 Correct 2 ms 348 KB Output is correct
14 Correct 147 ms 12136 KB Output is correct
15 Correct 78 ms 7236 KB Output is correct
16 Correct 137 ms 11440 KB Output is correct
17 Correct 73 ms 6848 KB Output is correct