Cod sursa(job #2510035)

Utilizator hunting_dogIrimia Alex hunting_dog Data 15 decembrie 2019 17:06:43
Problema Reguli Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <iostream>
#include <fstream>

#define NMAX 500001

using namespace std;


ifstream f("reguli.in");
ofstream g("reguli.out");

int main()
{
    int n,v[NMAX],lps[NMAX],len=0,m=0;
    f>>n;
    for(int i=0;i<n;++i)
        f>>v[i];
    for(int i=n-1;i>0;--i)
        v[i]=v[i]-v[i-1];
    int i=2;
    while(i<n)
    {
        if(v[i]==v[len+1])
        {
            ++len;
            lps[i]=len;
            ++i;
        }
        else if(len)
            len=lps[len-1];
        else
        {
            lps[i]=0;
            ++i;
        }
        if(len && (i-1)%(i-1-len)==0)
            m=i-1-len;
    }
    if(!m)
        m=n-1;
    g<<m<<'\n';
    for(int i=1;i<=m;++i)
        g<<v[i]<<'\n';

    return 0;
}