Cod sursa(job #1166002)

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

using namespace std;

int a[Nmax],v[Nmax],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("%d", &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("%d\n", a[i]);
    return 0;
}