Cod sursa(job #785280)

Utilizator danalex97Dan H Alexandru danalex97 Data 8 septembrie 2012 12:36:04
Problema Reguli Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.46 kb
#include <fstream>
using namespace std;

const int Nmax = 500010;

long long A[Nmax];
int Sift[Nmax],N,a,b;

ifstream F("reguli.in");
ofstream G("reguli.out");

int main()
{
	F>>N>>a;
	for (int i=1;i<N;++i)
		F>>b,A[i]=b-a,a=b;
	
	int q=0;
	for (int i=2;i<=N;++i )
	{
		while ( q > 0 && A[i]!=A[q+1] ) q = Sift[q];
		if ( A[i]==A[q+1] ) ++q;
		Sift[i] = q;
	}
	
	G<<N-Sift[N-1]-1<<'\n';
	for (int i=1;i<N-Sift[N-1];++i)
		G<<A[i]<<'\n';
}