Cod sursa(job #1601601)

Utilizator vladrochianVlad Rochian vladrochian Data 16 februarie 2016 00:36:17
Problema Reguli Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <fstream>

using namespace std;

const int N_MAX = 5e5;

ifstream fin("reguli.in");
ofstream fout("reguli.out");

int N;
int a[N_MAX + 5];
int p[N_MAX + 5];

int main() {
   fin >> N;
   for (int i = 1; i <= N; ++i) {
      fin >> a[i];
      a[i - 1] = a[i] - a[i - 1];
   }
   --N;

   for (int i = 2, q = 0; i <= N; ++i) {
      while (q > 0 && a[q + 1] != a[i])
         q = p[q];
      if (a[q + 1] == a[i])
         ++q;
      p[i] = q;
   }

   fout << N - p[N] << "\n";
   for (int i = 1; i <= N - p[N]; ++i)
      fout << a[i] << "\n";
   return 0;
}