Cod sursa(job #1787751)

Utilizator stelian2000Stelian Chichirim stelian2000 Data 24 octombrie 2016 22:56:38
Problema Reguli Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <cstdio>

using namespace std;

int v1[500010],v[500010],d[500010];

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