Cod sursa(job #1166003)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 3 aprilie 2014 09:25:40
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <cstdio>
#define Nmax 500005

using namespace std;

long long a[Nmax],v[Nmax];
int pi[Nmax],N;

inline void Pi()
{
    int k=0,i;
    pi[1]=0;
    for(i=2;i<=N;++i)
    {
        while(k && a[k+1]!=a[i])
            k=pi[k];
        if(a[k+1]==a[i])
            ++k;
        pi[i]=k;
    }
}

int main()
{
    int i;
    freopen ("reguli.in","r",stdin);
    freopen ("reguli.out","w",stdout);
    scanf("%d", &N);
    for(i=1;i<=N;++i)
        scanf("%lld", &v[i]);
    for(i=2;i<=N;++i)
        a[i-1]=v[i]-v[i-1];
    --N;
    Pi();
    printf("%d\n", N-pi[N]);
    for(i=1;i<=N-pi[N];++i)
        printf("%lld\n", a[i]);
    return 0;
}