Cod sursa(job #988670)

Utilizator FlameingoAiordachioaei Marius Flameingo Data 23 august 2013 16:32:09
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <cstdio>
using namespace std;

const int NMAX = 500003;

int PI[NMAX];
long long V[NMAX];

int main () {

    freopen ("reguli.in", "r", stdin);
    freopen ("reguli.out", "w", stdout);
    long long a, f;
    int N, i, k = 0;
    scanf ("%d%lld%lld", &N, &f, &a);
    --N;
    V[1] = a - f;
    f = a;
    for (i = 2; i <= N; ++i) {
        scanf ("%lld", &a);
        V[i] = a - f;
        f = a;
        while (k && V[k + 1] != V[i])
            k = PI[k];
        if (V[k + 1] == V[i])
            ++k;
        PI[i] = k;
    }
    a = N - PI[N];
    printf ("%lld\n", a);
    for (i = 1; i <= a; ++i)
        printf ("%lld\n", V[i]);
}