Untitled
unknown
c_cpp
3 years ago
1.1 kB
6
Indexable
#include<stdio.h> int main(){ int a[1000] ={}, n = 1, b[1000] = {}, c[1000] = {}; for(int i = 0; i < 1000; i++){ a[i] = -1; } while(scanf("%d", &a[n]) != EOF) n++; for(int i = 1; i < n; i++){ b[i] = 1; int length = 1; for(int j = 1; (i-j) > 0 && a[i-j] == a[i+j]; j++){ length += 2; b[i-((length-1)/2)] = length; } if(a[i] == a[i+1]){ int length = 0; for(int j = 0; (i-j) > 0 && a[i-j] == a[i+1+j]; j++){ length += 2; if(b[i-((length-2)/2)] < length) b[i-((length-2)/2)] = length; } } } int max = 0, m = -1; for(int i = 1; i < n; i++){ c[i] = b[i] + b[i+b[i]]; if(b[i+b[i]] == 0) c[i-1] = c[i]+1; } for(int i = 1; i < n; i++){ if(c[i] >= max){ max = c[i]; m = i; } } for(int i = 0; i < max-1; i++){ printf("%d ", a[m+i]); } printf("%d\n", a[m+max-1]); return 0; }
Editor is loading...