제출 #146841

#제출 시각아이디문제언어결과실행 시간메모리
146841MvC회문 (APIO14_palindrome)C++11
23 / 100
1072 ms26880 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,mx,nr; bitset<nmax>b[nmax]; string s; char c[nmax]; ll pw[nmax],in; vector<int>vc; 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; vc.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])vc.pb(x); ad(x,-c[r-i+1]); x=(x*in)%mod; } sort(vc.begin(),vc.end()); mx=nr=1; for(r=1;r<vc.size();r++) { mx=max(mx,nr); if(vc[r]==vc[r-1])nr++; else nr=1; } mx=max(mx,nr); if(vc.empty())mx=0; rs=max(rs,i*mx); //if((double)clock()/CLOCKS_PER_SEC>0.990)break; } //cout<<fixed<<setprecision(5)<<(double)clock()/CLOCKS_PER_SEC<<endl; cout<<rs<<endl; return 0; }

컴파일 시 표준 에러 (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")
 
palindrome.cpp: In function 'int main()':
palindrome.cpp:69:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(r=1;r<vc.size();r++)
           ~^~~~~~~~~~
#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...