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++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <cmath>
using namespace std;
int main(void){
    string S; //3-99文字（長さは奇数）

    //標準入力
    cin >> S;

    //チェック長さ
    int chk_flag = 0;
    int chk_len = 0;
    chk_len = ((S.length()-1)/2);

    //回文チェック（前半）
    for(int i=0; i<(chk_len/2); i++)
    {
        if( S[i] != S[chk_len -1 -i])
        {
            // cout << "1" << i << endl;
            // cout << "2" << (chk_len - i) << endl;
            chk_flag = 1;
            break;
        }
    }

    cout << chk_flag << endl;

    //回文チェック（後半）
    int chk_start = 0;
    int last_str = 0;
    chk_start = ((S.length()+3)/2);

    //cout << chk_start << endl;
    chk_start -= 1; //0オリジン調整
    last_str = S.length() -1; //0オリジン調整

    for(int i=0; i<(chk_len/2); i++)
    {
        if( S[chk_start + i] != S[last_str - i])
        {
            // cout << "1" << (chk_start - 1 + i) << endl;
            // cout << "2" << (S.length() - i) << endl;
            chk_flag = 1;
            break;
        }
    }

    if(chk_flag == 0)
    {
        cout << "Yes" << endl;
    }
    else
    {
        cout << "No" << endl;
    }

    return 0;
}