Cod sursa(job #2548177)

Utilizator IulianOleniucIulian Oleniuc IulianOleniuc Data 16 februarie 2020 12:50:34
Problema Numarare Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>
using namespace std;

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

int main() {
    int n; fin >> n;
    vector<int> v(n);
    for (int i = 0; i < n; i++)
        fin >> v[i];

    vector<int> dp(n);
    for (int i = 0, l = 0, r = -1; i < n; i++) {
        int k = (i > r ? 0 : min(dp[l + r - i + 1], r - i + 1));
        while (0 <= i - k - 1 && i + k < n && v[i - k - 1] + v[i + k] == v[i - k] + v[i + k - 1])
            k++;
        dp[i] = k--;
        if (i + k > r) {
            l = i - k - 1;
            r = i + k;
        }
    }

    int64_t sol = 0;
    for (int i = 0; i < n; i++)
        sol += dp[i];
    fout << sol << '\n';

    fout.close();
    return 0;
}