Cod sursa(job #1184669)

Utilizator stef93Stefan Gilca stef93 Data 13 mai 2014 19:43:52
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>

using namespace std;

int n, urm[500003];
long long x[500003] , a[500003];

void determinaUrm()
{
	int k = 0, i;
	urm[1] = 0;

	for (i = 2; i < n; i++)
	{
		while (k > 0 && a[k + 1] != a[i])
		{
			k = urm[k];
		}

		if (a[k + 1] == a[i])
		{
			k++;
		}

		urm[i] = k;
	}
}
int main()
{
	ifstream in("reguli.in");
	ofstream out("reguli.out");
	int i;

	in >> n;

	for (i = 0; i < n; i++)
	{
		in >> x[i];
	}
	for (i = 1; i <= n; i++)
	{
		a[i] = x[i] - x[i - 1];
	}

	determinaUrm();
	out << n - urm[n - 1] - 1 << '\n';

	for (i = 1; i < n - urm[n - 1]; i++)
	{
		out << a[i] << '\n';
	}
	in.close();
	out.close();
	return 0;
}