Cod sursa(job #1460015)

Utilizator DrumeaVDrumea Vasile DrumeaV Data 11 iulie 2015 14:30:47
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <bits/stdc++.h>
using namespace std;

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

const int Dim = 500001;

int N,P[Dim];
long long D[Dim],X;

int main()
{
    fin >> N;

    N--;

    for (int i = 0;i <= N;i++)
        fin >> D[i];

    for (int i = N;i > 0;i--)
        D[i] -= D[i - 1];

    for (int i = 2;i <= N;i++)
    {
        while(X > 0 && D[i] != D[X + 1])
            X = P[X];

        if (D[X + 1] == D[i])
            X++;

        P[i] = X;
    }

    fout << N - P[N] << "\n";

    for (int i = 1;i <= N - P[N];i++)
        fout << D[i] << "\n";

  return 0;
}