Cod sursa(job #3277315)

Utilizator mateilucaLuca Matei Gabriel mateiluca Data 15 februarie 2025 18:08:35
Problema Numarare Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("numarare.in");
ofstream fout("numarare.out");
int n, a[100005], s[100005], stg[100005], drp[100005];
long long sol;

int main()
{
    int i, j, mini, st, dr;
    fin >> n;
    for(i = 1;i <= n;i++)
        fin >> a[i];
    for(i = 2;i <= n;i++)
        s[i - 1] = a[i] - a[i - 1];
    n--;
    stg[1] = drp[n] = 1;
    j = 1;
    for(i = 2;i <= n;i++)
    {
        while(a[j] != a[i])
            j++;
        stg[i] = i - j + 1;
    }
    j = n;
    for(i = n - 1;i >= 1;i--)
    {
        while(a[j] != a[i])
            j--;
        drp[i] = j - i + 1;
    }
    for(i = 1;i <= n;i++)
    {
        st = dr = i;
        while(a[st] == a[dr] && st > 1 && dr < n)
        {
            mini = min(stg[st], drp[dr]);
            st -= mini;
            dr += mini;
        }
        sol += (dr - i + 1);
    }
    fout << sol << "\n";
    fout.close();
    return 0;
}