Cod sursa(job #3313389)

Utilizator calinarulMarinescu Calin calinarul Data 3 octombrie 2025 23:14:16
Problema Reguli Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<bits/stdc++.h>

using namespace std;
ifstream fin("reguli.in");
ofstream fout("reguli.out");
const int NMAX=5*1e5+5;
int  x[NMAX];
int  pi[NMAX];
vector<int>a;
void precalculate()
{
    int m=a.size();
    for(int j=0,i=1;i<m;i++)
    {
        while (j>0 && a[i]!=a[j])j=pi[j-1];
        if(a[i]==a[j])j++;
        pi[i]=j;
    }
}
int main()
{
    int n;
    fin>>n;
    for(int i=0;i<n;i++)
    {
        fin>>x[i];
        if(i>=1)
        a.push_back(x[i]-x[i-1]);
    }
    precalculate();
    int L=a.size()-1;
    if(L==0){fout<<0;return 0;}
    int prefix=pi[L-1];
    int k=L-prefix;
    {fout<<k<<'\n';for(int i=0;i<k;i++)fout<<a[i]<<'\n';}
}