Cod sursa(job #3322162)

Utilizator octavurlurleteanu alexandru octavian octavurl Data 12 noiembrie 2025 22:33:29
Problema Reguli Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>
#define ll long long
#define pb(x) push_back(x)
using namespace std;

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

const int nmax = 5e5 ;
int pi[nmax+5];
int nxt()
{
    int x;
    fin >> x;
    return x;
}
void les(vector<int>s)
{
  int n = s.size();
  int i = 1 , lg = 0 ;
  while ( i < n )
  {
    if ( s[lg] == s[i] )
        pi[i++]=++lg;
    else if ( lg )
        lg = pi[lg-1];
    else
        pi[i++]=0;
  }
}

signed main()
{
    int n ;
    fin >> n ;
    int prevx = nxt();
    vector<int>sum;
    for ( int i = 1 ; i < n ; ++ i )
    {
    int y = nxt();
    sum.pb(y-prevx); prevx=y;
    }
    --n;
    les(sum);
    if ( !pi[n-1] )
    {
    fout << n << '\n';
    for ( auto it : sum )
        fout << it << ' ' ;
    return 0;
    }
    fout << n - pi[n-1] << '\n';
    for ( int i = 0 ; i < n - pi[n-1] ; ++ i )
        fout << sum[i] << ' ' ;
    return 0;
}