Cod sursa(job #18958)

Utilizator DITzoneCAdrian Diaconu DITzoneC Data 18 februarie 2007 15:22:01
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.51 kb
#include <stdio.h>

#define FOR(i,s,d) for(i=(s);i<(d);++i)
#define nmax 1<<19

typedef long long lint;

int n,par[nmax];
lint A[nmax];

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

	int i,j;
	lint a,b;

	scanf("%d",&n);
	scanf("%lld",&a);
	FOR(i,1,n)
	{
		scanf("%lld",&b);
		A[i]=b-a;
		a=b;
	}
	j=par[1]=0;
	FOR(i,2,n)
	{
		for(;j&&A[j+1]!=A[i];j=par[j]);								
		par[i]=(j+=A[j+1]==A[i]);
	}
	printf("%d\n",n-1-par[n-1]);
	FOR(i,1,n-par[n-1])
		printf("%d\n",A[i]);
	return 0;
}