結果

問題 No.1617 Palindrome Removal
ユーザー RrrRrRRrRRrrRRrr
提出日時 2021-07-22 21:55:32
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
TLE  
実行時間 -
コード長 2,782 bytes
コンパイル時間 2,164 ms
コンパイル使用メモリ 194,932 KB
最終ジャッジ日時 2025-01-23 06:37:07
ジャッジサーバーID
(参考情報)
judge2 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample WA * 4
other WA * 18 TLE * 2
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
using Graph = vector<vector<long long>>; // グラフ型
Graph G; // グラフ
using ll = long long;
using ld = long double;
using str = string;
#define nedl endl
#define rep(i, n) for (long long i = 0; i < (long long)(n); i++)
#define repi(i,a,b) for(long long i = long long(a); i<long long(b); i++)
#define cfs(n) cout<<fixed<<setprecision(n)
#define sor(v) sort(v.begin(), v.end())
// ll max = *max_element(v.begin(), v.end());
// ll min = min_element(v.begin(), v.end());

int main() {
    bool ans = false;
    bool kaibun = false;
    bool onaji = false;
    str S;
    cin >> S;
    ll ss = 0;
    for (ll i = 0; i < S.length() / 2; i++) {
        ss = S.length() - 1;
        if (S[i] == S[ss] - i) {
            kaibun = true;
        }
    }
    ss = S.length() - 1;
    ll jj;
    rep(j, ss) {
        jj = j + 1;
        if (S[j] != S[jj]) {
            onaji = true;
        }
    }
    if (onaji == true) {
        cout << 0 << endl;
    }
    else {
        if (kaibun == true) {
            bool kaibun2 = true;
            ll p, q, r, t;
            ll l;
            bool aru = false;
            bool arukamo = false;
            for (l = 2; l <= S.length(); l = l + 2) {
                for (p = 0; p < S.length() - 1; p++) {
                    for (q = p + 1; q < S.length(); q++) {
                        r = 0;
                        arukamo = true;
                        for (t = S.length() - 1; r > t; t--) {
                            if (r == p || r == q) {
                                r++;
                            }
                            if (t == p || t == q) {
                                t--;
                            }
                            if (r > t) {
                                break;
                            }
                            if (S[t] == S[r]) {

                            }
                            else {
                                arukamo = false;
                            }
                            if (arukamo == true) {
                                aru = true;
                            }
                            if (aru == true) {
                                break;
                            }
                            r++;
                        }
                        if (aru == true) {
                            break;
                        }
                    }
                    if (aru == true) {
                        break;
                    }
                }
                if (aru == true) {
                    break;
                }
            }
            cout << S.length() - l << endl;
        }
        else {
            cout << S.length() << endl;
        }
    }
}
0