Cod sursa(job #841128)

Utilizator mirceadinoMircea Popoveniuc mirceadino Data 23 decembrie 2012 20:08:47
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<cstdio>
#define NMAX 500010
using namespace std;
int n,i;
long long a,b,v[NMAX],pi[NMAX];
void prefix()
{
    int i,q=0;
    for(i=2;i<=n;i++)
    {
        for(;q;)
        {
            if(v[i]==v[q+1]) break;
            q=pi[q];
        }
        if(v[i]==v[q+1]) q++;
        pi[i]=q;
    }
}
int main()
{
    freopen("reguli.in","r",stdin);
    freopen("reguli.out","w",stdout);
    scanf("%d",&n);
    scanf("%lld",&b);
    for(i=1;i<n;i++)
    {
        scanf("%lld",&a);
        v[i]=a-b;
        b=a;
    }
    n--;
    prefix();
    a=n-pi[n];
    printf("%lld\n",a);
    for(i=1;i<=a;i++) printf("%lld\n",v[i]);
    return 0;
}