Cod sursa(job #1006256)

Utilizator dobrebogdanDobre Bogdan Mihai dobrebogdan Data 6 octombrie 2013 18:59:29
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include<stdio.h>
#include<string.h>
long long a[500005];
unsigned a2[500005];
int main()
{
freopen("reguli.in","r",stdin);
freopen("reguli.out","w",stdout);
unsigned n,i,j;
scanf("%u",&n);
for(i=0;i<n;i++)
{
 scanf("%lld",&a[i]);
}
n--;
for(i=n;i>0;i--)
    a[i]=a[i]-a[i-1];
    a2[1]=j=0;
for(i=2;i<=n;i++)
{
    while(a[j+1]!=a[i] && j>0)
        {
j=a2[j];
        }
        if(a[j+1]==a[i])
        j++;
        a2[i]=j;
}
n=n-a2[n];
printf("%u\n",n);
for(i=1;i<=n;i++)
    printf("%lld\n",a[i]);
return 0;
}