Cod sursa(job #3169266)

Utilizator andreipirjol5Andrei Pirjol andreipirjol5 Data 14 noiembrie 2023 16:36:53
Problema Reguli Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>

using namespace std;

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

const int NMAX = 500000;
long long v[NMAX + 5];
int pi[NMAX + 5];


int main()
{
    int n;
    fin >> n;

    long long x, ant;
    fin >> ant;
    for(int i = 2; i <= n; i++)
    {
        fin >> x;
        v[i - 1] = 0LL + x - ant;
        ant = x;
    }

    for(int i = 2; i <= n - 1; i++)
    {
        int k = pi[i - 1];

        while(v[i] != v[k + 1] && k)
            k = pi[k];

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

        pi[i] = k;
    }

    fout << (n - 1) - pi[n - 1] << '\n';

    for(int i = 1; i <= (n - 1) - pi[n - 1]; i++)
        fout << v[i] << '\n';

    fin.close();
    fout.close();
    return 0;
}