Cod sursa(job #2460444)

Utilizator gavra_bogdanBogdan Gavra gavra_bogdan Data 23 septembrie 2019 18:58:15
Problema Reguli Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <bits/stdc++.h>

using namespace std;
const int nmax=500005;
long long v[nmax],phi[nmax];
int main()
{
	ifstream cin("reguli.in");
	ofstream cout("reguli.out");
    long long n,prec,curr;
	cin>>n>>prec;
	for(int i=1;i<=n-1;i++)
    {
        cin>>curr;
        v[i]=curr-prec;
        prec=curr;
    }
	for(int i=2;i<=n-1;i++)
	{
		long long aux=i-1;
		while(v[phi[aux]+1]!=v[i]&&aux>0)
			aux=phi[aux];
		if (v[phi[aux]+1]==v[i])
			phi[i]=phi[aux]+1;
		else
			phi[i]=0;
	}
	int l=n-1-phi[n-1];
    cout<<l<<"\n";
    for(int i=1;i<=l;i++)
        cout<<v[i]<<"\n";
	return 0;
}