Cod sursa(job #1717075)

Utilizator antanaAntonia Boca antana Data 14 iunie 2016 12:13:40
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <cstdio>
#define MAX 500000
using namespace std;
int pi[MAX];
long long v[MAX];
int main()
{
    freopen("reguli.in", "r", stdin);
    freopen("reguli.out", "w", stdout);
    int n, k;
    long long pred, x;
    scanf("%d%lld", &n, &pred);
    for(int i=2;i<=n;++i)
    {
        scanf("%lld", &x);
        v[i-1]=x-pred;
        pred=x;
    }
    n--;
    pi[1]=0;
    k=0;
    for(int i=2;i<=n;++i)
    {
        while(k && v[k+1]!=v[i])
            k=pi[k];
        if(v[k+1]==v[i])
            ++k;
        pi[i]=k;
    }
    n-=pi[n];
    printf("%d\n", n);
    for(int i=1;i<=n;++i)
        printf("%d\n", v[i]);
    return 0;
}