Cod sursa(job #1249956)

Utilizator tudorv96Tudor Varan tudorv96 Data 27 octombrie 2014 18:12:06
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <fstream>
#include <iostream>
using namespace std;

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

const int N = 5e5 + 5;

int n, t[N], k = 0;
long long x[N], v[N];

int main() {
    fin >> n;
    for (int i = 0; i < n; ++i)
        fin >> x[i];
    for (int i = 1; i < n; ++i)
        v[i] = x[i] - x[i-1];
    for (int i = 2; i < n; ++i) {
        while (k && v[k + 1] != v[i])
            k = t[k];
        if (v[k + 1] == v[i])
            k++;
        t[i] = k;
    }
    fout << n - 1 - t[n - 1] << "\n";
    for (int i = 1; i <= n - 1 - t[n - 1]; ++i)
        fout << v[i] << "\n";
}