Cod sursa(job #2637412)

Utilizator irimia_alexIrimia Alex irimia_alex Data 22 iulie 2020 20:37:06
Problema Reguli Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>
#include <iostream>
#define NMAX 500001

using namespace std;

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

long long int v[NMAX], n;
int p[NMAX];

void prefix() {
	int res = 0;
	p[1] = 0;
	int i = 1, j = 2;
	while (j < n) {
		if (v[i] == v[j]) {
			p[j] = i;
			if (i >= j / 2 && j % (j - i) == 0)
				res = j - i;
			++i;++j;
		}
		else
			if (i == 1) {
				p[j] = 0;
				++j;
			}
			else
				i = p[i - 1] + 1;
	}
	fout << res << '\n';
	for (i = 1;i <= res;++i)
		fout << v[i] << '\n';
}

int main() {
	fin >> n;
	for (int i = 0;i < n;++i)
		fin >> v[i];
	for (int i = n - 1;i > 0;--i) {
		v[i] -= v[i - 1];
	}
	prefix();

	return 0;
}