이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
//In The Name of Allah
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair < int , int > pii;
typedef pair < ll , ll > pll;
#define X first
#define Y second
#define mp make_pair
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define sz(x) (int)(x.size())
const int N = 1e6 + 10;
const ll mod = 1000696969;
const ll inf = 1e18 + 10;
ll pw[N], hsh[N];
ll getHash(int l, int r){
    return (hsh[r] - hsh[l - 1] * pw[r - l + 1] % mod + mod) % mod;
}
void solve(){
    string s;
    cin >> s;
    for (int i = 1; i <= sz(s); i ++)
        hsh[i] = (hsh[i - 1] * 27LL % mod + (s[i - 1] - 'a' + 1)) % mod;
    int L = 1, R = sz(s), ans = 0;
    while (L <= R){
        int l = L, r = R, f = 0;
        while (l < r){
            if (getHash(L, l) == getHash(r, R)){
                l ++; r --;
                ans += 2;
                f = 1;
                break;
            }
            l ++; r --;
        }
        L = l; R = r;
        if (f == 0){
            ans ++;
            break;
        }
    }
    cout << ans << '\n';
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    int q;
    cin >> q;
    pw[0] = 1;
    for (int i = 1; i < N; i ++)
        pw[i] = pw[i - 1] * 27LL % mod;
    while (q --)
        solve();
    return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |