Cod sursa(job #1474898)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 23 august 2015 07:44:28
Problema Reguli Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
#include <vector>
using namespace std;

int find_longest(const vector<long long>& v){
	const int n = v.size();
	vector<int> pi(n, 0);
	for(int i = 1; i < n; ++i){
		for(pi[i] = pi[i-1];
			v[pi[i]] != v[i] && pi[i] > 0;
			pi[i] = pi[pi[i]-1]);
		if(v[pi[i]] == v[i]){
			++pi[i]; } }
	return pi.back(); }

int main(){
	ifstream f("reguli.in");
	ofstream g("reguli.out");
	int n;
	f >> n;
	vector<long long> delte(n-1);
	{
		long long x_vechi;
		f >> x_vechi;
		for(int i = 1, x; i < n; ++i){
			f >> x;
			delte[i-1] = x-x_vechi;
			x_vechi = x; } }
	const int lung_perioada = delte.size() - find_longest(delte);
	g << lung_perioada << '\n';
	for(int i = 0; i < lung_perioada; ++i){
		g << delte[i] << '\n'; }
	return 0; }