Cod sursa(job #19241)

Utilizator magicMaria Ionescu magic Data 18 februarie 2007 23:00:30
Problema Reguli Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 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);
  cout<<K<<'\n';
  for (long i = 1; i<=K ; i++)
    cout<<x[i]-x[i-1]<<' ';
  cout<<'\n';
  to.close();
}

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

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

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