Submission #146834

#TimeUsernameProblemLanguageResultExecution timeMemory
146834MvCPalindromes (APIO14_palindrome)C++14
23 / 100
1046 ms27188 KiB
#pragma GCC target("avx2") #pragma GCC optimization("O3") #pragma GCC optimization("unroll-loops") #include<bits/stdc++.h> //#include "boxes.h" #define rc(x) return cout<<x<<endl,0 #define pb push_back #define mkp make_pair #define in insert #define er erase #define fd find #define fr first #define sc second typedef long long ll; typedef long double ld; const ll INF=0x3f3f3f3f3f3f3f3f; const ll llinf=(1LL<<61); const int inf=(1<<30); const int nmax=1e4+50; const ll mod=1e9+7; const ll p=31; using namespace std; int n,i,rs,x,r,l; bitset<nmax>b[nmax]; string s; char c[nmax]; ll pw[nmax],in; map<int,int>mp; void ad(int &x,int y) { x+=y; if(x>=mod)x-=mod; if(x<0)x+=mod; } int main() { //freopen("sol.in","r",stdin); //freopen("sol.out","w",stdout); //mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0); cin>>s; n=s.size(); for(i=1;i<=n;i++)c[i]=s[i-1]; pw[0]=1; for(i=1;i<=n;i++)pw[i]=(pw[i-1]*p)%mod; in=129032259; for(i=1;i<=n;i++) { x=0; mp.clear(); for(r=1;r<i;r++) { ad(x,pw[r-1]*c[r]%mod); } for(r=i;r<=n;r++) { ad(x,pw[i-1]*c[r]%mod); l=r-i+1; if(i==1)b[l][r]=1; else if(i==2 && c[r]==c[l])b[l][r]=1; else if(i==3 && c[r]==c[l])b[l][r]=1; else if(i>3 && c[r]==c[l] && b[l+1][r-1])b[l][r]=1; if(b[l][r]) { mp[x]++; rs=max(rs,i*mp[x]); } ad(x,-c[r-i+1]); x=(x*in)%mod; } } cout<<rs<<endl; return 0; }

Compilation message (stderr)

palindrome.cpp:2:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization("O3")
 
palindrome.cpp:3:0: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
 #pragma GCC optimization("unroll-loops")
#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...