Cod sursa(job #1315543)

Utilizator OctaDuiu Octavian Octa Data 12 ianuarie 2015 21:45:25
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<cstdio>
using namespace std;
long long i,j,n,x,y,t;
long long v[500003],p[500003];

int main()
{
    freopen("reguli.in","r",stdin);freopen("reguli.out","w",stdout);

    scanf("%lld %lld",&n,&x);

    for(i=1;i<=n;i++)
    {
        scanf("%lld ",&y);
        v[i]=y-x;
        x=y;
    }

    j=0;
    n--;
    for(i=2;i<=n;i++)
    {
        while(j && v[j+1]!=v[i])
            j=p[j];

        if(v[j+1]==v[i])
            j++;

      p[i]=j;
    }

    t=n-p[n];
    printf("%lld\n",t);

    for(i=1;i<=t;i++)
        printf("%lld\n",v[i]);

  return 0;
}