Cod sursa(job #1310203)

Utilizator BeilandArnoldArnold Beiland BeilandArnold Data 6 ianuarie 2015 16:20:34
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <fstream>
#include <vector>
#include <limits>

const long long INF=std::numeric_limits<long long>::max();

int main(){
	std::ifstream fin("reguli.in");
	std::ofstream fout("reguli.out");

	unsigned n; fin>>n;

	std::vector<long long> dif(n);
	dif[0]=INF;

	long long old; fin>>old;
	for(unsigned i=1;i<n;++i){
		long long x; fin>>x;
		dif[i]=x-old;
		old=x;
	}

	unsigned L=1;
	unsigned sf=0;

	for(unsigned i=1;i<n;++i){
		if(dif[i]==dif[i-L] && (i==n-1||dif[i+1-L]==dif[i+1]||sf+1==L)) ++sf;
		else{
			sf=0;
			L=i;
		}

		if(sf==L){
			sf=0;
		}
	}
	fout<<L<<'\n';
	for(unsigned i=1;i<=L;++i) fout<<dif[i]<<'\n';

}