Cod sursa(job #1005365)

Utilizator thewildnathNathan Wildenberg thewildnath Data 4 octombrie 2013 21:31:10
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<stdio.h>

long long x[500002];
int pi[500002];

int main()
{
    freopen("reguli.in","r",stdin);
    freopen("reguli.out","w",stdout);
    int n,i,aux;
    scanf("%d",&n);
    for(i=0;i<n;++i)
        scanf("%lld",&x[i]);
    aux=0;
    for(i=n-1;i>0;--i)
        x[i]=x[i]-x[i-1];
    --n;
    for(i=2;i<=n;++i)
    {
        while(x[aux+1]!=x[i]&&aux)
            aux=pi[aux];
        if(x[aux+1]==x[i])
            ++aux;
        pi[i]=aux;
    }
    n=n-pi[n];
    printf("%d\n",n);
    for(i=1;i<=n;++i)
        printf("%lld\n",x[i]);
    return 0;
}