Cod sursa(job #737539)

Utilizator GrimpowRadu Andrei Grimpow Data 19 aprilie 2012 16:55:45
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.46 kb
#include <cstdio>
#define lm 500010

int n, a[lm];
long long x, c, v[lm];

int main()
{
	freopen("reguli.in","r",stdin);
	freopen("reguli.out","w",stdout);
	scanf("%d",&n);
	scanf("%lld",&x);
	int i;
	for (i=1; i<=n; i++)
	{
		scanf("%lld",&c);
		v[i]=c-x;
		x=c;
	}
	a[1]=0;
	int k=0;
	n--;
	for (i=2; i<=n; i++)
	{
		while (k && v[k+1]!=v[i]) k=a[k];
		if (v[k+1]==v[i]) k++;
		a[i]=k;
	}
	n-=a[n];
	printf("%d\n",n);
	for (i=1; i<=n; i++) printf("%lld\n",v[i]);
}