Submission #545914

#TimeUsernameProblemLanguageResultExecution timeMemory
545914rainboyPalindromic Partitions (CEOI17_palindromic)C11
100 / 100
139 ms16748 KiB
#include <stdio.h>
#include <string.h>

#define N	1000000

int main() {
	int t;

	scanf("%d", &t);
	while (t--) {
		static char cc[N + 1], cc_[N * 2 + 2];
		static int rr[N * 2 + 1];
		int n, i, j, o, x, ans;

		scanf("%s", cc), n = strlen(cc);
		for (i = 0; i <= n * 2; i++)
			cc_[i] = i % 2 == 0 ? ' ' : (i / 2 % 2 == 0 ? cc[i / 4] : cc[n - 1 - i / 4]);
		cc_[n * 2 + 1] = 0;
		for (i = 0, o = x = 0; i <= n * 2; i++)
			if (o + o - i >= 0 && i + rr[o + o - i] < x)
				rr[i] = rr[o + o - i];
			else {
				o = i;
				while (x <= n * 2 && o + o - x >= 0 && cc_[x] == cc_[o + o - x])
					x++;
				rr[i] = x - o;
			}
		ans = 0;
		for (i = 0, j = 2; j <= n; j += 2)
			if (rr[i + j] > j - i)
				i = j, ans += 2;
		if (i < n)
			ans++;
		printf("%d\n", ans);
	}
	return 0;
}

Compilation message (stderr)

palindromic.c: In function 'main':
palindromic.c:9:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
    9 |  scanf("%d", &t);
      |  ^~~~~~~~~~~~~~~
palindromic.c:15:3: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |   scanf("%s", cc), n = strlen(cc);
      |   ^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...