Problem:
Score : 200 points

Problem Statement

A string S of an odd length is said to be a strong palindrome if and only if all of the following conditions are satisfied:

S is a palindrome.

Let N be the length of S. The string formed by the 1-st through ((N-1)/2)-th characters of S is a palindrome.

The string consisting of the (N+3)/2-st through N-th characters of S is a palindrome.

Determine whether S is a strong palindrome.

Constraints

S consists of lowercase English letters.

The length of S is an odd number between 3 and 99 (inclusive).

Input

Input is given from Standard Input in the following format:

S

Output

If S is a strong palindrome, print Yes;
otherwise, print No.

Sample Input 1

akasaka

Sample Output 1

Yes

S is akasaka.

The string formed by the 1-st through the 3-rd characters is aka.

The string formed by the 5-th through the 7-th characters is aka.
All of these are palindromes, so S is a strong palindrome.

Sample Input 2

level

Sample Output 2

No

Sample Input 3

atcoder

Sample Output 3

No

Solution in C (GCC 5.4.1) (judge verdict: Accepted)

#include<stdio.h>
#include<string.h>
int main()
{
char str[100];
scanf("%s",str);
int i,j,n,flag=0,k,s;
  n=strlen(str);
  for(i=n;i>=1;i--)
  {
    str[i]=str[i-1];
  }
  for(i=1;i<=n/2;i++)
  {
    if(str[i]!=str[n+1-i])
       {
         flag=2;
         break;
       }
  }
       j=(n-1)/4;
       k=(n-1)/2;
       for(i=1;i<=j;i++)
       {
         if(str[i]!=str[k+1-i])
            {
              flag=2;
              break;
            }
         }
            k=(n+3)/2;
            j=(1+(n-3)/2)/2;
            s=0;
            for(i=k;i<n;i++)
            {
              s++;
              if(str[i]!=str[n+1-s])
                 {
                   flag=2;
                   break;
                 }
              }
                 if(flag==0)
                 printf("Yes");
                 else
                 printf("No");
}