Cod sursa(job #2259777)

Utilizator andrei_diaconu11Andrei C. Diaconu andrei_diaconu11 Data 13 octombrie 2018 19:39:06
Problema Reguli Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fi("reguli.in");
ofstream fo("reguli.out");

long long v[500000];
int pi[500000];

inline int get_pi(int x, int i){
   i = pi[i];
   while(i != -1 && x != v[i])
    i = pi[i];
   return i;
}

int main()
{
  long long ult, x;
  int n;
  fi >> n >> ult;
  n--;
  for(int i = 0; i < n; i++){
    fi >> x;
    v[i] = x - ult;
    ult = x;
  }
  pi[0] = -1;
  for(int i = 0; i < n; i++)
    pi[i + 1] = get_pi(v[i], i) + 1;
  int salt = n - pi[n];
  fo << salt;
  for(int i = 0; i < salt; i++)
    fo << '\n' << v[i];
  fi.close();
  fo.close();
  return 0;
}