Cod sursa(job #1479568)

Utilizator al.mocanuAlexandru Mocanu al.mocanu Data 31 august 2015 16:47:02
Problema Reguli Scor 50
Compilator c Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <stdio.h>
#define MAX 500005

int n, x[MAX], i, p[MAX];

void prefix();

int main(){
	freopen("reguli.in", "r", stdin);
	freopen("reguli.out", "w", stdout);
	scanf("%d%d", &n, &x[0]);
	for(i = 1; i < n; i++)
		scanf("%d", &x[i]);
	for(i = n - 1; i > 0; i--)
		x[i] -= x[i - 1];
	prefix();
	n--;
	while(p[n] == p[n - 1] + 1)
		n--;
	printf("%d\n", n);
	for(i = 1; i <= n; i++)
		printf("%d\n", x[i]);
	return 0;
}

void prefix(){
	int i, k = 0;
	for(i = 2; i < n; i++){
		while(k > 0 && x[k + 1] != x[i])
			k = p[k];
		if(x[k + 1] == x[i])
			k++;
		p[i] = k;
	}
}