Cod sursa(job #2288971)

Utilizator mateibanuBanu Matei Costin mateibanu Data 24 noiembrie 2018 09:57:35
Problema Reguli Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <bits/stdc++.h>

using namespace std;

#define ll long long

ll v[500010],p[500010];
ll n,x,i,y,k;

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