Cod sursa(job #361322)
Utilizator | Data | 4 noiembrie 2009 17:00:59 | |
---|---|---|---|
Problema | Reguli | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.55 kb |
#include<stdio.h>
int x[510000],pi[510000],i,j,n,k;
int main()
{
freopen("reguli.in","r",stdin);
freopen("reguli.out","w",stdout);
scanf("%d",&n);
for(i=0;i<n;i++) scanf("%d",&x[i]);
for(i=n-1;i>=1;--i) x[i]-=x[i-1];
pi[1]=0;
k=0;
for(i=2;i<n;i++) { while(k>0&&x[k+1]!=x[i]) k=pi[k];
if(x[k+1]==x[i]) ++k;
pi[i]=k;
}
n=n-1-pi[n-1];
printf("%d\n",n);
for(i=1;i<=n;i++) printf("%d\n",x[i]);
fclose(stdin);
fclose(stdout);
return 0;
}