Cod sursa(job #1708313)

Utilizator refugiatBoni Daniel Stefan refugiat Data 26 mai 2016 21:25:29
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream si("reguli.in");
ofstream so("reguli.out");
long long d[500005],st[500005];
int main()
{
    int n;
    si>>n;
    int i;
    long long a,b;
    si>>a;
    for(i=1;i<n;++i)
    {
        si>>b;
        d[i]=b-a;
        a=b;
    }
    long long k=0;
    for(i=2;i<n;++i)
    {
        while(k&&d[i]!=d[k+1])
        {
            k=st[k];
        }
        if(d[i]==d[k+1])
        {
            k++;
        }
        st[i]=k;
    }
    n-=st[n-1]+1;
    so<<n<<'\n';
    for(i=1;i<=n;++i)
        so<<d[i]<<'\n';
    return 0;
}