Cod sursa(job #1946830)

Utilizator Theodor1000Cristea Theodor Stefan Theodor1000 Data 30 martie 2017 15:19:53
Problema Reguli Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <cstdio>
#include <algorithm>

using namespace std;

int v[500010], phi[500010];

int main ()
{
    freopen ("reguli.in", "r", stdin);
    freopen ("reguli.out", "w", stdout);

    int n, lst;
    scanf ("%d %d", &n, &lst);

    for (int i = 2; i <= n; ++i)
    {
        int x;
        scanf ("%d", &x);

        v[i - 1] = x - lst;
        lst = x;
    }

    int k = 0;
    for (int i = 2; i < n; ++i)
    {
        for (; k > 0 && v[k + 1] != v[i]; k = phi[k]);

        if (v[k + 1] == v[i]) phi[i] = ++k;
    }

    k = n - 1 - phi[n - 1];
    printf ("%d\n", k);

    for (int i = 1; i <= k; ++i)
        printf ("%d\n", v[i]);

    return 0;
}