Cod sursa(job #2289018)

Utilizator Vlad_NituNitu Vlad-Petru Vlad_Nitu Data 24 noiembrie 2018 10:23:48
Problema Reguli Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream f("reguli.in");
ofstream g("reguli.out");
ll N , x , y , v[500100] , p[5000100] , k ;
ll sol = 0 ;
int main()
{
    f >> N;
    f >> x;
    for (ll i = 1 ; i <= N ; i++)
    {
        f >> y ;
        v[i] = y - x ;
        x = y ;
    }


    k = 0 ;
    ll M = N - 1 ;
    for (ll i = 2 ; i <= M ; i++)
    {
        while (k != 0 && v[k+1] != v[i]) k = p[k] ;
        if (v[k+1] == v[i]) k ++ ;
        p[i] = k ;
    }

    //for (ll i = 1 ; i <= M ; i ++ )
     //   g << p[i] << ' ' ;
     sol = k - p[k];
    g << sol << '\n';
     for (int i = 1 ; i <= sol ; i ++)
        g << v[i] << '\n';

    return  0 ;

}