Cod sursa(job #2430806)

Utilizator gabriel.bjgGabriel b. gabriel.bjg Data 16 iunie 2019 16:14:19
Problema Reguli Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
//#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <vector>
#include <algorithm>
#include <string>
#include <map>
#include <fstream>

#define f(i,L,R) for (int i = (L); i < (R); ++i)
#define fe(i,L,R) for (int i = (L); i <= (R); ++i)

using namespace std;

ifstream fin("reguli.in");
ofstream fout("reguli.out");

int main()
{
	long long n, y;
	vector<long long> x, a;
	vector<unsigned int> pi;

	fin >> n;
	f(i, 0, n)
	{
		fin >> y; 
		x.push_back(y);
	}

	f(i, 1, n)
		a.push_back(x[i] - x[i - 1]);

	unsigned int i = 1, j = 0;
	pi.resize(a.size());
	pi[0] = 0;
	while (i < a.size())
	{
		if (a[j] == a[i])
		{
			j++;
			pi[i++] = j;
		}
		else
		{
			if (j == 0)
				pi[i++] = j;
			else
				j = pi[j - 1];
		}
	}

	unsigned int k = 0;
	while (!pi[k])
		k++;
	fout << k << "\n";
	for (unsigned int idx = 0; idx < k; ++idx)
		fout << a[idx] << "\n";

	return 0;
}