Cod sursa(job #1280864)

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

int v[505050];
int pre[505050];
int in[505050];

int N;

int 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("%d",&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("%d\n",v[i]);
    }
}