Cod sursa(job #863942)

Utilizator Marius96Marius Gavrilescu Marius96 Data 24 ianuarie 2013 13:43:28
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.5 kb
#include<cstdio>

long long v[500005];
int p[500005];

int main (void)
{
	freopen ("reguli.in","r",stdin);
#ifdef INFOARENA
	freopen ("reguli.out","w",stdout);
#endif

	int n;long long o,c;
	scanf ("%d%lld",&n,&o);
	n--;
	for(int i=1;i<=n;i++){
		scanf ("%lld",&c);
		v[i]=c-o;
		o=c;
	}

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

	int ans=n-p[n];
	printf ("%d\n",ans);
	for(int i=1;i<=ans;i++)
		printf ("%lld\n",v[i]);
	return 0;
}