Cod sursa(job #1280875)

Utilizator timicsIoana Tamas timics Data 2 decembrie 2014 17:29:54
Problema Reguli Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<stdio.h>
#include<iostream>
using namespace std;
int N, a[500100],b[500100],pi[500100],q;
int main() {
    freopen("reguli.in","r",stdin);
    freopen("reguli.out","w",stdout);
    scanf("%d",&N);
    for(int i=1;i<=N;++i) {
        scanf("%d",&a[i]);
    }
    for(int i=1;i<N;++i) {
        b[i] = a[i+1] - a[i];
    }
    --N;
    for(int i=2;i<=N;++i) {
        while(q && b[i] != b[q+1]) {
            q = pi[q];
        }
        if(b[i]==b[q+1]) {
            ++q;
        }
        pi[i] = q;
    }
    printf("%d\n",N - pi[N]);
    for(int i=1;i<=N-pi[N];++i) {
        printf("%d\n",b[i]);
    }
    return 0;
}