Cod sursa(job #19713)

Utilizator IgnitionMihai Moraru Ignition Data 19 februarie 2007 21:04:22
Problema Reguli Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>

#define MN (524288)

long long n[MN];
int N, p[MN], X;

int main()
{
	int i, k;
	long long on, nn;

	freopen("reguli.in", "r", stdin);
	freopen("reguli.out", "w", stdout);

	scanf("%d %lld", &N, &on);
	for(i = 1; i < N; ++ i, on = nn) {
		scanf("%lld", &nn);
		n[i] = nn-on;
		//printf("%lld ", n[i]);
	}
	//printf("\n");

	for(k = p[1] = 0, i = 2; i < N; ++ i) {
		for(; k > 0 && n[i] != n[k+1]; k = p[k]);
		k += (n[k+1] == n[i]);
		p[i] = k;
	}

	//printf("%d\n", p[N-1]);
	X = N-1-p[N-1];
	printf("%d\n", X);
	for(i = 1; i <= X; ++ i)
		printf("%lld\n", n[i]);

	/*
	float s = sizeof(n)+sizeof(p);
	s /= 1024;
	printf("%.4f\n", s);
	*/

	return 0;
}