제출 #83288

#제출 시각아이디문제언어결과실행 시간메모리
83288farukkastamonuda회문 (APIO14_palindrome)C++14
100 / 100
62 ms41312 KiB
#include <bits/stdc++.h> #define li 300005 #define inf 1000000009 #define md 1000000007 #define lo long long #define fi first #define se second #define mp make_pair #define pb push_back using namespace std; int n,link[li],len[li],now,lazy[li]; char s[li]; int tot=2,nxt[li][26]; stack<int> st; lo int ans; void add(int ind){ while(s[ind-len[now]-1]!=s[ind]) now=link[now]; if(nxt[now][s[ind]-'a']){ now=nxt[now][s[ind]-'a']; lazy[now]++; return ; } int nw=++tot; nxt[now][s[ind]-'a']=nw; len[nw]=len[now]+2; st.push(nw); lazy[nw]++; if(len[nw]==1){ link[nw]=2; now=nw; return ; } now=link[now]; while(s[ind-len[now]-1]!=s[ind]) now=link[now]; link[nw]=nxt[now][s[ind]-'a']; now=nw; } int main(){ scanf("%s",s+1); n=strlen(s+1); link[1]=1;link[2]=1; len[1]=-1;len[2]=0; now=1; for(int i=1;i<=n;i++) add(i); while(!st.empty()){ int x=st.top(); st.pop(); ans=max(ans,1ll*len[x]*lazy[x]); lazy[link[x]]+=lazy[x]; } printf("%lld\n",ans); return 0; }

컴파일 시 표준 에러 (stderr) 메시지

palindrome.cpp: In function 'int main()':
palindrome.cpp:39:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s",s+1);
  ~~~~~^~~~~~~~~~
#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...