Cod sursa(job #779956)

Utilizator crushackPopescu Silviu crushack Data 19 august 2012 16:31:20
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <stdio.h>
#define NMax 500010

typedef long long ll;
const char IN[]="reguli.in",OUT[]="reguli.out";

int N,Rez,L;
int P[NMax];
ll A[NMax];

void prefix()
{
	int i,k=0;
	P[1]=0;
	for (i=2;i<=N;++i)
	{
		while (k>0 && A[k+1]!=A[i]) k=P[k];
		P[i]= (k+= (A[k+1]==A[i]));
	}
}

int main()
{
	int i;
	ll x,y;
	freopen(IN,"r",stdin);
	scanf("%d%lld",&N,&x);--N;
	for (i=1;i<=N;++i){
		scanf("%lld",&y);
		A[i]=y-x;
		x=y;
	}
	fclose(stdin);
	prefix();
	Rez=N-P[N];
	freopen(OUT,"w",stdout);
	printf("%d\n",Rez);
	for (i=1;i<=Rez;++i) printf("%lld\n",A[i]);
	fclose(stdout);
	return 0;
}