Cod sursa(job #19109)

Utilizator magicMaria Ionescu magic Data 18 februarie 2007 19:21:38
Problema Reguli Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<fstream>
#include<iostream>

using namespace std;

#define inputfile "reguli.in"
#define outputfile "reguli.out"

const long NMAX = 500000;
typedef signed long sl;

void ReadData(sl x[NMAX], long &N) {
  ifstream in(inputfile);
  in>>N;
  for (long i = 0; i<N; i++)
    in>>x[i];
  in.close();
}

void WriteData(sl x[NMAX], long K) {
  ofstream to(outputfile);
  to<<K<<'\n';
  for (long i = 1; i<=K ; i++)
    to<<x[i]-x[i-1]<<'\n';
  to.close();
}

long Solve(sl x[NMAX], long N) {
  long i = 1, K = 0;
  for (long j = 2; j<N; j++)
    if ( (x[j]-x[j-1]) == (x[i]-x[i-1]) ) {
      i++;
      if (K == 0) K = j-1;  
    }
    else {
      i = 1;
      K = 0; 
      if ( (x[j]-x[j-1]) == (x[i]-x[i-1]) ) {
	i++;
	if (K == 0) K = j-1;  
      }
    }
  if (K == 0) K = N-1;
  return K;
}

int main() {
  long N;
  sl x[NMAX];

  ReadData(x,N);
  long K = Solve(x,N);
  WriteData(x,K);
}