Cod sursa(job #2471401)

Utilizator cyg_contnr1Rares Burghelea cyg_contnr1 Data 10 octombrie 2019 20:30:27
Problema Numarare Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>

using namespace std;

ifstream cin ("numarare.in");
ofstream cout ("numarare.out");

int n, a[100005], v[100005];
int r, mij;
int main()  {
  cin >> n;
  for (int i = 1; i <= n; ++i)  {
    cin >> a[i];
  }
  for (int i = 1; i < n; ++i)
    a[i] = a[i + 1] - a[i];
  --n;
  int ans = 0;
  for (int i = 1; i <= n; ++i)  {
    if (i > r)  {
      int x = 1;
      while (a[i + x] == a[i - x] && i + x <= n && i - x >= 1)
      ++x;
      --x;
      r = i + x;
      mij = i;
      ans += x + 1;
      v[i] = x;
    }
    else  {
      int x = min(v[2 * mij - i], r - i);
      while (a[i + x] == a[i - x] && i + x <= n && i - x >= 1)
        ++x;
      --x;
      if (i + x > r)  {
        r = i + x;
        mij = i;
      }
      ans += x + 1;
      v[i] = x;
    }
  }
  cout << ans;
  return 0
}