Cod sursa(job #2458270)

Utilizator Iulia25Hosu Iulia Iulia25 Data 20 septembrie 2019 08:51:13
Problema Reguli Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <fstream>

using namespace std;

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

int n, k;
int b[500005], a[500005], phi[500005];

int main()  {
  fin >> n;
  k = n - 1;
  fin >> b[0];
  for (int i = 1; i < n; ++i)  {
    fin >> b[i];
    a[i] = b[i] - b[i - 1];
  }
  for (int i = 2; i < n; ++i)  {
    int x = i - 1;
    while (a[phi[x] + 1] != a[i] && phi[x])  {
      x = phi[x];
    }
    if (a[phi[x] + 1] == a[i])
      phi[i] = phi[x] + 1;
    else phi[i] = -1;
    if (phi[i] == 1)
      k = i - 1;
  }
  fout << k << '\n';
  for (int i = 1; i <= k; ++i)
    fout << a[i] << ' ';
  return 0;
}