Cod sursa(job #841250)

Utilizator Al3ks1002Alex Cociorva Al3ks1002 Data 23 decembrie 2012 22:39:33
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<cstdio>
using namespace std;
const int nmax = 500005;
int i,n,pi[nmax],sol;
long long a[nmax],d[nmax];
void prefix()
{
    int q=0;
    pi[1]=0;
    for(i=2;i<=n;i++)
    {
        while(q && d[q+1]!=d[i]) q=pi[q];
        if(d[q+1]==d[i]) q++;
        pi[i]=q;
    }
}
int main()
{
    freopen("reguli.in","r",stdin);
    freopen("reguli.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++) scanf("%lld",&a[i]);
    for(i=1;i<n;i++) d[i]=a[i+1]-a[i];
    n--; prefix(); sol=n-pi[n];
    printf("%d\n",sol);
    for(i=1;i<=sol;i++) printf("%d\n",d[i]);
    return 0;
}