Cod sursa(job #92652)

Utilizator alzwdedVlad Mesco alzwded Data 16 octombrie 2007 10:43:27
Problema Reguli Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <stdio.h>
#include <stdlib.h>

FILE *f,*g;
int *x,*a,n,an=0;

void citire(){
	fscanf(f,"%d",&n);
	x=(int*)malloc(n*sizeof(int));
	a=(int*)malloc(n*sizeof(int));
	for(int i=0;i<n;++i){
		fscanf(f,"%d",&x[i]);
	}
	fclose(f);
}

int check(){
	int k=0;

	for(int i=1;i<n;++i,k++){
		if(k>=an+1){
			k=0;
		}
		if(x[i]!=x[i-1]+ ( ( (i)%(k+1) ) ? a[((i)%(k+1))] : a[k])){
			return 0;
		}
	}
	return 1;
}

void endgame(){
	int i;

	fprintf(g,"%d\n",an+1);

	for(i=0;i<=an;++i){
		fprintf(g,"%d\n",a[i]);
	}
	fclose(g);
	exit(0);
}


void facere(){
	for(int i=1;i<n;++i){
		a[i-1]=x[i]-x[i-1];
		an++;

	}
	for(an=1;an<n;++an){
		if(check()){
			endgame();
		}
	}
}

main(){
	f=fopen("reguli.in","r");
	g=fopen("reguli.out","w");
	citire();
	facere();

	fprintf(g,"nu merge :-??");
	fclose(g);
	return 0;
}