Cod sursa(job #982374)

Utilizator gbi250Gabriela Moldovan gbi250 Data 9 august 2013 02:22:51
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <cstdio>
#define SIZE 500001

using namespace std;
int n, i, j, pi[SIZE];
long long first, last, a[SIZE];
int main()
{
    freopen("reguli.in", "r", stdin);
    freopen("reguli.out", "w", stdout);
    scanf("%d%lld", &n, &first);
    for(i=2;i<=n;++i)
    {
        scanf("%lld", &last);
        a[i-1]=last-first;
        first=last;
    }
    n--;
    j=0;
    for(i=2;i<=n;++i)
    {
        while(j>0 && a[j+1]!=a[i])
            j=pi[j];
        if(a[j+1]==a[i])
            ++j;
        pi[i]=j;
    }
    n-=pi[n];
    printf("%d\n", n);
    for(i=1;i<=n;++i)
        printf("%lld\n", a[i]);
    return 0;
}