Cod sursa(job #22711)

Utilizator alex_prgPrigoana Alexandru alex_prg Data 27 februarie 2007 10:01:44
Problema Reguli Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<stdio.h>
#define nmax 500000
long n,x[nmax],y[nmax],k;

long perioada()
{long i=1,b,niv=0,j;
y[0]=x[0];
while(x[i]!=y[0])
	{y[i]=x[i];
	 ++i;}
b=i;
k=b;
for(i=b;i<n-1;++i)
	 if(x[i]!=y[niv])
		 {niv=0;
		  i=b;
		  y[k]=x[i];
		  ++i;
		  while(x[i]!=y[0])
					   {y[i]=x[i];
						++i;
						if(i==n) return n;}
		  b=i-1;
		  i--;
		  k=b+1;}
	 else {++niv;
		  if(niv==k) niv=0;}
return 0;}

int main()
{long i,p,q;
freopen("reguli.in","r",stdin);
freopen("reguli.out","w",stdout);
scanf("%d%d",&n,&p);
for(i=0;i<n-1;++i)
	{scanf("%d",&q);
	 x[i]=q-p;
	 p=q;}

perioada();

printf("%d\n",k);
for(i=0;i<k;++i)
	printf("%d\n",y[i]);
fclose(stdin);
fclose(stdout);
return 0;}