Cod sursa(job #1796591)

Utilizator ade_tomiEnache Adelina ade_tomi Data 3 noiembrie 2016 16:57:26
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <iostream>
#include <fstream>
#define NMAX 500005
using namespace std;
long long  last_x, x, v[NMAX], pi[NMAX], sol, k, n;
int main ()
{
    ifstream cin ("reguli.in");
    ofstream cout ("reguli.out");
    cin >> n ;
    for (int i = 1; i <= n; i++)
    {
        cin >> x;
        if (i != 1)
            v[i - 1] = x - last_x;
        last_x = x;
    }
    n--;
    //cout << n;
    for (int i = 2; i <= n; i++)
    {
        while (k && v[k + 1] != v[i])
            k = pi[k];
        if (v[k + 1] == v[i])
            k++;
        pi[i] = k;
    }

    sol = n -  pi[n];
    cout << sol << "\n";
    for (int i = 1; i <= sol; i++)
        cout << v[i]<< "\n";
    return 0;


}