Cod sursa(job #2288958)

Utilizator catalina200029Olteanu Catalina catalina200029 Data 24 noiembrie 2018 09:52:27
Problema Reguli Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <bits/stdc++.h>
#define nmax 500005

using namespace std;

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

long long n,m,k,p[nmax],nr,c[nmax],x,y;

int main() {
    int i,j;
    f>>n;
    f>>x;
    for (i=2;i<=n;i++) {
        f>>y;
        c[i-1]=y-x;
        x=y;
    }
    k=0;
    n--;
    for (i=2;i<=n;i++) {
        while (k!=0 && c[k+1]!=c[i]) k=p[k];
        if (c[k+1]==c[i]) k++;
        p[i]=k;
    }
    for (i=n;i>=1;i--)
        if (i%(i-p[i])==0) {
            m=i-p[i];
            break;
        }
    g<<m<<'\n';
    for (i=1;i<=m;i++) g<<c[i]<<'\n';
    return 0;
}