답안 #47976

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
47976 2018-05-09T09:47:52 Z Kmcode 회문 (APIO14_palindrome) C++14
0 / 100
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

palindrome.cpp: In function 'int main()':
palindrome.cpp:50:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < s.size(); i++) {
                  ~~^~~~~~~~~~
palindrome.cpp:46:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s", buf);
  ~~~~~^~~~~~~~~~~
# 결과 실행 시간 메모리 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 -