Cod sursa(job #1035919)

Utilizator george_stelianChichirim George george_stelian Data 18 noiembrie 2013 21:20:11
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <cstdio>

using namespace std;

long long v[500010],v1[500010];
int n,i,k;

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