Cod sursa(job #3202980)

Utilizator laurentiu.maticaMatica Laurentiu-Andrei laurentiu.matica Data 12 februarie 2024 20:02:55
Problema Reguli Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.61 kb
// #include <iostream>

#include <fstream>
#include <climits>

using namespace std;

ifstream cin("reguli.in");
ofstream cout("reguli.out");

long long a[500002],n,m;
long long lps[500002];

int main()
{
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> a[i];
	for (int i = 0; i < n - 1; i++)
		a[i] = a[i + 1] - a[i];
	n--;
	long long q = 0;
	long long l = 0;
	for (int i = 1; i < n ; i++)
	{
		while (q && a[q] != a[i])
			q=lps[q-1];
		if (a[q] == a[i])
			q++;
		lps[i] = q;
	}
	cout << n - lps[n - 1] << '\n';
	for (int i = 0; i < n- lps[n - 1]; i++)
		cout << a[i] << '\n';
	return 0;
}