Cod sursa(job #2460454)

Utilizator minecraft3Vintila Valentin Ioan minecraft3 Data 23 septembrie 2019 19:10:56
Problema Reguli Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <bits/stdc++.h>

using namespace std;

long long n, i, v[500005], kmp[500005], j;

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

    fin >> n >> v[0];
    for(i = 1; i < n; ++i)
        fin >> v[i], v[i-1] = v[i] - v[i-1];

    for(i = 1, j = 0, --n; i < n; ++i)
        if(v[i] == v[j]) kmp[i] = ++j;
        else kmp[i] = j = (v[i] == v[0]);

    for(i = n - 1; i > 0; --i)
        if(kmp[i] && (i+1) % (i + 1 - kmp[i]) == 0) break;
    
    n = (i != 0) ? (i - kmp[i]) : (n-1); fout << n+1;
    for(i = 0; i <= n; ++i)
        fout.put('\n') << v[i];
}