Cod sursa(job #517527)

Utilizator acelasi7Tudor Maxim acelasi7 Data 29 decembrie 2010 00:21:09
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<stdio.h>
using namespace std;
FILE *in=fopen("reguli.in","r"),*out=fopen("reguli.out","w");
long long A[500002];
int V[500002];
int main()
{
	int i,N,mic,k=0;
	long long ax,x;
	fscanf(in,"%d",&N);
	fscanf(in,"%lld",&ax);
	for(i=1;i<N;++i)
	{
		fscanf(in,"%lld",&x);
		A[i]=x-ax;
		ax=x;
	}
	mic=N-1;
	for(i=2;i<N;i++)
	{
		while(A[k+1]!=A[i]&&k)
			k=V[k];
		if(A[k+1]==A[i])
			++k;
		V[i]=k;
		if(i%(i-k)==0&&k)
			mic=i-k;
	}
	fprintf(out,"%d\n",mic);
	for(i=1;i<=mic;++i)
		fprintf(out,"%lld\n",A[i]);
	fclose(in);
	fclose(out);
	return 0;
}