Cod sursa(job #517515)

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