Cod sursa(job #2798897)

Utilizator bogdanvladmihaiBogdan Vlad-Mihai bogdanvladmihai Data 12 noiembrie 2021 01:07:40
Problema Numarare Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;

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

using ll = long long;

int main() {
  in.tie(NULL);
  out.tie(NULL);
  ios_base::sync_with_stdio(false);
  int n; in >> n;
  vector<int> v(n);
  for (int &x : v)
    in >> x;
  vector<int> pal(n);
  int l = -1, r = -1;
  ll ans = 0;
  for (int i = 1; i < n; i++) {
    int sum;
    if (i >= r) {
      pal[i] = 1;
      sum = v[i] + v[i - 1];
    } else {
      pal[i] = min(r - i + 1, pal[l + r - i + 1]);
      sum = v[i] + v[i - 1];
    }
  //  cerr << sum << " " << pal[i] << "\n";
    while (i - 1 - pal[i] >= 0 && i + pal[i] < n &&
           sum == v[i + pal[i] - 1] + v[i - pal[i]])
      pal[i]++;
    pal[i]--;
    if (pal[i] + i > r) {
      r = pal[i] + i;
      l = i - pal[i] - 1;
    }
  //  cerr << pal[i] << " ";
    ans += pal[i] + 1;
  }
  out << ans << "\n";
  return 0;
}