Cod sursa(job #3313382)

Utilizator calinarulMarinescu Calin calinarul Data 3 octombrie 2025 22:49:17
Problema Reguli Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 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();
    // for(int i:a)fout<<i<<" ";
    // fout<<'\n';
    // for(int i=0;i<a.size();i++)fout<<pi[i]<<" ";
    // fout<<'\n';
    for(int i=0;i<a.size();i++)
    {
        if(pi[i]>0)
        {
            fout<<i<<'\n';
            for(int j=0;j<i;j++)fout<<a[j]<<"\n";
            return 0;
        }
    }
}