Cod sursa(job #3163540)

Utilizator elisa.ipateElisa Ipate elisa.ipate Data 31 octombrie 2023 16:45:55
Problema Reguli Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;



int s[500002], p[500002], s1[500002];

int main () {

    ifstream cin ( "reguli.in" );
    ofstream cout ( "reguli.out" );

    int n, k = 0, i, x;
    cin >> n;
    for( i = 0; i < n; i++ )
        cin >> s1[i];
    n--;
    for( i = 0; i < n; i++ )
        s[i] = s1[i+1] - s1[i];


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

    int length = n - p[n - 1];
    cout << length << "\n";
    for ( int i = 0; i < length; i++ )
        cout << s[i] << "\n";

    return 0;
}