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...