Cod sursa(job #1280865)

Utilizator MKLOLDragos Ristache MKLOL Data 2 decembrie 2014 17:19:40
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<stdio.h>

long long v[505050];
long long pre[505050];
long long in[505050];

int N;

void calc(){
    pre[1]=0;
    int loc = 0;
    for(int i=2;i<=N;++i){
        while(loc > 0 && v[i] != v[loc+1]){
            loc = pre[loc];
        }
        if(v[loc+1] == v[i])
            ++loc;
        pre[i] = loc;
    }
}

int main(){
    freopen("reguli.in","r",stdin);
    freopen("reguli.out","w",stdout);
    scanf("%d",&N);
    for(int i=1;i<=N;++i){
        scanf("%lld",&in[i]);
        if(i > 1){
            v[i-1] = in[i] - in[i-1];
        }
    }
    --N;
    calc();
    printf("%d\n",N-pre[N]);
    for(int i=1;i<=N-pre[N];++i){
        printf("%lld\n",v[i]);
    }
}