Cod sursa(job #3313384)

Utilizator calinarulMarinescu Calin calinarul Data 3 octombrie 2025 23:04:13
Problema Reguli Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 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=1;i<=n;i++)
    {
        fin>>x[i];
        if(i>=2)
        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;
    if((L)%k==0){fout<<k<<'\n';for(int i=0;i<k;i++)fout<<a[i]<<'\n';} else {fout<<L<<'\n';for(int i=0;i<L;i++)fout<<a[i]<<'\n';}
}