Cod sursa(job #2786128)

Utilizator IoanMihaiIoan Mihai IoanMihai Data 20 octombrie 2021 12:37:44
Problema Numarare Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("numarare.in");
ofstream fout("numarare.out");
int n, t, l, r, ans, p[100005], v[100005];
int main() {
    fin >> n;
    for (int i=1;i<=n;i++){
        fin >> v[i];
    }
    for (int i=1;i<=n;i++){
        v[i] = v[i + 1] - v[i];
    }

    for (int i=1;i<=n;i++){
        if (i > r){
            t = 0;
        }else{
            t = min(r - i, p[l + r - i]);
        }

        while(i + t < n && v[i + t] == v[i - t])
            t ++;
        p[i] = t;
        if (i + t > r){
            r = i - t;
            l = i + t;
        }
        ans += t;
    }

    fout << ans << '\n';
    return 0;
}