Cod sursa(job #3163499)

Utilizator iulia_morariuIuli Morariu iulia_morariu Data 31 octombrie 2023 15:30:46
Problema Reguli Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>
#define int long long

using namespace std;

signed main(){
    cin.tie(0);ios::sync_with_stdio(0);

    int n; cin >> n;
    vector <int> v(n);
    for(int i = 0; i < n; i++) cin >> v[i];
    for(int i = n - 1; i > 0; i--){
        v[i] = v[i] - v[i - 1];
    }
    v[0] = 0;
    v.erase(v.begin());
    n--;

    int p[n];
    p[0] = 0;
    int k = 0;
    for(int i = 1; i < n; i++){
        while(k > 0 && v[i] != v[k]){
            k = p[k - 1];
        }
        if(v[i] == v[k]) k++;
        p[i] = k;
    }

    int lp = n - p[n - 1];
    if(p[n - 1] == 0){
        cout << n << endl;
        for(int i = 0; i < n; i++) cout << v[i] << "\n";
        cout << endl;
    }else{
        cout << lp << endl;
        for(int i = 0; i < lp; i++) cout << v[i] << "\n";
        cout << endl;
    }

    return 0;
}