Cod sursa(job #1495273)

Utilizator felixiPuscasu Felix felixi Data 2 octombrie 2015 20:39:39
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
using namespace std;
#include<fstream>

ifstream in("reguli.in");
ofstream out("reguli.out");

const long long NMAX = 500000;

long long N;
long long s[NMAX + 2];
long long pi[NMAX + 2];

void make_prefix()
{
    int q = 0, i;
    for( pi[1] = 0, i = 2;  i <= N - 1;  i++ ) {
        while( q && s[i] != s[ q + 1 ] ) {
            q = pi[q];
        }

        if( s[i] == s[ q + 1 ] ) {
            q++;
        }

        pi[i] = q;
    }

}

int main ()
{
    long long x, y;
    in >> N >> x;

    for( int i = 2; i <= N;  i++ ) {
        in >> y;
        s[ i - 1 ] = y - x;
        x = y;
    }

    make_prefix();

    x = N - 1 - pi[N - 1];
    out << x << '\n';

    for( int i = 1;  i <= x;  i++ ) {
        out << s[i] << '\n';
    }

    return 0;

}