# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
47976 | 2018-05-09T09:47:52 Z | Kmcode | 회문 (APIO14_palindrome) | C++14 | 23 ms | 22868 KB |
#include "bits/stdc++.h" using namespace std; #define MAX 100005 char buf[MAX]; string s; int len[MAX]; int linkk[MAX]; int nex[MAX][26]; int ord; int cur; int cnt[MAX]; void append(int idx) { char c = s[idx]; while (!(idx-len[cur]-1>=0&&s[idx]==s[idx-len[cur]-1])) { cur = linkk[cur]; } if (nex[cur][c - 'a'] == -1) { nex[cur][c - 'a'] = ord; ord++; } len[nex[cur][c - 'a']] = len[cur] + 2; linkk[nex[cur][c - 'a']] = linkk[cur]; cur = nex[cur][c - 'a']; while (linkk[cur] != -1&&nex[linkk[cur]][c-'a']==-1) { linkk[cur] = linkk[linkk[cur]]; } if (linkk[cur] != -1) { linkk[cur] = nex[linkk[cur]][c - 'a']; } else { linkk[cur] = 1; } cnt[cur]++; } int main() { memset(nex, -1,sizeof(nex) ); len[0] = -1; len[1] = 0; ord = 2; scanf("%s", buf); s = buf; linkk[1] = 0; linkk[0] = -1; for (int i = 0; i < s.size(); i++) { append(i); } long long int ans = 0; for (int i = ord - 1; i >= 0; i--) { cnt[linkk[i]] += cnt[i]; ans = max(ans, (long long int)(len[i])*cnt[i]); } printf("%lld\n", ans); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 9 ms | 10488 KB | Output is correct |
2 | Correct | 9 ms | 10604 KB | Output is correct |
3 | Correct | 10 ms | 10604 KB | Output is correct |
4 | Correct | 9 ms | 10604 KB | Output is correct |
5 | Correct | 9 ms | 10612 KB | Output is correct |
6 | Correct | 9 ms | 10620 KB | Output is correct |
7 | Correct | 9 ms | 10752 KB | Output is correct |
8 | Correct | 9 ms | 10752 KB | Output is correct |
9 | Correct | 9 ms | 10752 KB | Output is correct |
10 | Incorrect | 9 ms | 10752 KB | Output isn't correct |
11 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 9 ms | 10772 KB | Output is correct |
2 | Correct | 9 ms | 10776 KB | Output is correct |
3 | Correct | 10 ms | 10780 KB | Output is correct |
4 | Correct | 9 ms | 10800 KB | Output is correct |
5 | Correct | 10 ms | 10804 KB | Output is correct |
6 | Correct | 9 ms | 10808 KB | Output is correct |
7 | Correct | 9 ms | 10812 KB | Output is correct |
8 | Correct | 9 ms | 10816 KB | Output is correct |
9 | Correct | 9 ms | 10820 KB | Output is correct |
10 | Correct | 10 ms | 10824 KB | Output is correct |
11 | Correct | 9 ms | 10828 KB | Output is correct |
12 | Incorrect | 9 ms | 10832 KB | Output isn't correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 10 ms | 10956 KB | Output is correct |
2 | Correct | 12 ms | 11224 KB | Output is correct |
3 | Correct | 10 ms | 11272 KB | Output is correct |
4 | Correct | 9 ms | 11272 KB | Output is correct |
5 | Correct | 9 ms | 11272 KB | Output is correct |
6 | Correct | 9 ms | 11272 KB | Output is correct |
7 | Correct | 10 ms | 11272 KB | Output is correct |
8 | Incorrect | 9 ms | 11272 KB | Output isn't correct |
9 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 13 ms | 12648 KB | Output is correct |
2 | Correct | 13 ms | 12948 KB | Output is correct |
3 | Correct | 13 ms | 12948 KB | Output is correct |
4 | Correct | 13 ms | 13024 KB | Output is correct |
5 | Correct | 13 ms | 13128 KB | Output is correct |
6 | Correct | 12 ms | 13128 KB | Output is correct |
7 | Correct | 12 ms | 13196 KB | Output is correct |
8 | Incorrect | 11 ms | 13196 KB | Output isn't correct |
9 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 23 ms | 22868 KB | Execution killed with signal 11 (could be triggered by violating memory limits) |
2 | Halted | 0 ms | 0 KB | - |