제출 #1340426

#제출 시각아이디문제언어결과실행 시간메모리
1340426khangai11Palindromes (APIO14_palindrome)C++20
23 / 100
92 ms196608 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
ll m1=998244353;
void solve(){
	string s;
	cin>>s;
	vector<vector<ll>> sf(s.size(),vector<ll>(s.size()));
	for(ll a=0;a<s.size();a++){
		ll d=0;
		for(ll b=a;b<s.size();b++){
			d*=29;
			d+=(ll)(s[b]-'a'+1);
			d%=m1;
			sf[a][b]=d;
		}
	}
	for(ll a=s.size()-1;a>=0;a--){
		ll d=0;
		for(ll b=a;b>=0;b--){
			d*=29;
			d+=(ll)(s[b]-'a'+1);
			d%=m1;
			sf[a][b]=d;
		}
	}
	ll D=0;
	map<ll,ll> mp;
	for(ll a=0;a<s.size();a++){
		for(ll b=a;b<s.size();b++){
			if(sf[a][b]==sf[b][a]){
				mp[sf[a][b]]+=(b-a+1);
			}
		}
	}
	for(auto z:mp){
		D=max(D,z.second);
	}
	cout<<D<<endl;
}
signed main(){
	ios::sync_with_stdio();
	cin.tie(0);
	cout.tie(0);
//	freopen("a.in", "r", stdin);
//	freopen("a.out", "w", stdout);
	ll t=1;
//	cin>>t;
	for(ll a=0;a<t;a++){
		solve();
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...