Submission #157326

#TimeUsernameProblemLanguageResultExecution timeMemory
157326likhon5Palindromes (APIO14_palindrome)C++14
0 / 100
126 ms70548 KiB
#include <bits/stdc++.h> #define ull unsigned long long #define ll long long #define pb push_back #define mp make_pair #define fast ios_base::sync_with_stdio(false); cin.tie(NULL) #define filein freopen("input.txt","r",stdin) #define fileout freopen("output.txt","w",stdout) using namespace std; const int mx=300000; int nxt[mx][26]; int len[mx],link[mx]; int node,t; string str; void pre() { len[1]=-1,len[2]=0; link[1]=link[2]=1; node=t=2; } int cal[mx]; void add(int p) { while(str[p-len[t]-1]!=str[p]) t=link[t]; int x=link[t]; while(str[p-len[x]-1]!=str[p]) x=link[x]; int c=str[p]-'a'; if(nxt[t][c]==false) { nxt[t][c]=++node; len[node]=len[t]+2; link[node]=(len[node]==1)? 2: nxt[x][c]; } t=nxt[t][c] ; cal[node]++; } int main() { cin>>str; pre(); for(int i=0;i<str.size();i++) add(i); for(int i=node;i>=3;i--) cal[link[i]]+=cal[i]; int ans=-1; for(int i=3;i<=node;i++) { ans=max(ans,len[i]*cal[i]); } cout<<ans<<endl; }

Compilation message (stderr)

palindrome.cpp: In function 'int main()':
palindrome.cpp:41:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<str.size();i++) add(i);
                 ~^~~~~~~~~~~
#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...