Cod sursa(job #893858)

Utilizator andreea29Iorga Andreea andreea29 Data 26 februarie 2013 18:18:22
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<fstream>

#define Nmax 500010

using namespace std;

long long n, x, i, y, pi[Nmax], a[Nmax], k, sol;

int main()
{
    ifstream f("reguli.in");
    ofstream h("reguli.out");
    f >> n;
    f >> x;
    for (i = 2; i <= n; ++i)
    {
        f >> y;
        a[i - 1] = y - x;
        x = y;
    }
    --n;
    for(i = 2 ; i <= n ; ++i)
    {
        while( k > 0 && a[k+1] != a[i] )
            k = pi[k] ;

        if( a[k+1] == a[i] )
            k++;

        pi[i] = k ;
    }
    sol = n - pi[n];
    h << sol << '\n';
    for (i = 1; i <= sol; ++i)
        h << a[i] << '\n';
    h.close();
    return 0;
}