Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define filer() freopen("in.txt","r",stdin)
- #define filew() freopen("out.txt","w",stdout)
- #include<iostream>
- #include<stdio.h>
- #include<string.h>
- #include<math.h>
- #include<algorithm>
- #include<queue>
- #include<stack>
- #include<string>
- #include<vector>
- #include <map>
- #define INF 1<<29
- #define PI pair<int,int>
- #define SET(a, x) memset((a), (x), sizeof(a))
- #define pb push_back
- #define i64 long long
- using namespace std;
- typedef vector<int> VI;
- //i64 INF=(i64)((i64)1<<(i64)59);
- char s[1000010];
- string preProcess() {
- int n = strlen(s);
- if (n == 0) return "^$";
- string ret = "^";
- for (int i = 0; i < n; i++)
- {
- ret += "#" ;
- ret.pb(s[i]);
- }
- ret += "#$";
- return ret;
- }
- int longestPalindrome() {
- string T = preProcess();
- //cout<<T<<endl;;
- int n = T.length();
- int *P = new int[n];
- int C = 0, R = 0;
- for (int i = 1; i < n-1; i++) {
- int i_mirror = 2*C-i; // equals to i' = C - (i-C)
- P[i] = (R > i) ? min(R-i, P[i_mirror]) : 0;
- // Attempt to expand palindrome centered at i
- while (T[i + 1 + P[i]] == T[i - 1 - P[i]])
- P[i]++;
- // If palindrome centered at i expand past R,
- // adjust center based on expanded palindrome.
- if (i + P[i] > R) {
- C = i;
- R = i + P[i];
- }
- }
- // Find the maximum element in P.
- int maxLen = 0;
- int centerIndex = 0;
- for (int i = 1; i < n-1; i++) {
- if ((i+P[i])==(n-2) ) {
- //return P[i];
- maxLen = P[i];
- break;
- //centerIndex = i;
- }
- }
- delete[] P;
- return maxLen;
- //return s.substr((centerIndex - 1 - maxLen)/2, maxLen);
- }
- int main()
- {
- //filer();
- int T,cas=0,i,j,y,n,m,k,x;
- //string S;
- scanf("%d",&T);
- while(T--)
- {
- scanf("%s",s);
- //cin>>S;
- //string P=longestPalindrome();
- int sz=strlen(s);
- int a=longestPalindrome();
- int ans=sz+(sz-a);
- //int ans=S.length()-P.length();
- //ans+=S.length();
- printf("Case %d: %d\n",++cas,ans);
- }
- return 0;
- }
- /*
- Test Case:
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement