제출 #251407

#제출 시각아이디문제언어결과실행 시간메모리
251407phuleethanh회문 (APIO14_palindrome)C++14
47 / 100
1085 ms35072 KiB
#include <bits/stdc++.h> using namespace std; const int N = 303030; struct nut { int len = 0, occ = 0, suffLink = 0, child[26]; } Tree[N]; char s[N]; int last, num; void insert(int i) { //Tim nut X to nhat thoa man while (s[i - Tree[last].len - 1] != s[i]) last = Tree[last].suffLink; //Tim nut ma suffLink se tro toi int w = s[i] - 'a', tmp = Tree[last].suffLink; while (s[i - Tree[tmp].len - 1] != s[i]) tmp = Tree[tmp].suffLink; //Them moi : Neu nut nay chua co trong cay if (Tree[last].child[w] == 0) { Tree[last].child[w] = ++num, Tree[num].len = Tree[last].len + 2; Tree[num].suffLink = (Tree[num].len == 1 ? 0 : Tree[tmp].child[w]); } last = Tree[last].child[w]; Tree[last].occ++; } int main() { //freopen("z.inp", "r", stdin); ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); Tree[1].len = -1, Tree[0].suffLink = Tree[1].suffLink = 1; last = 0, num = 1; cin >> s; for (int i = 0; i < strlen(s); i++) insert(i); long long ans = 0; for (int i = num; i >= 2; i--) { ans = max(ans, 1ll * Tree[i].len * Tree[i].occ); Tree[Tree[i].suffLink].occ += Tree[i].occ; } cout << ans; return 0; }

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

palindrome.cpp: In function 'int main()':
palindrome.cpp:37:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < strlen(s); 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...