Cod sursa(job #2312547)

Utilizator usureluflorianUsurelu Florian-Robert usureluflorian Data 5 ianuarie 2019 00:09:59
Problema Numarare Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f ("numarare.in");
ofstream g ("numarare.out");
const int nmax=1e5+3;
long long sol,v[nmax],d[nmax],k,n,c,r,mr,st,dr,sum;
int main()
{
    ios::sync_with_stdio(false);
    f>>n;
    for(int i=1;i<=n;++i)
    {
        f>>v[i];
        v[i-1]-=v[i];
    }
    --n;
    for(int i=1;i<=n;++i)
    {
        if(r>=i)
        {
            mr=2*c-i;
            d[i]=min(d[mr],n-i+1);
        }
        d[i]=max(d[i],1ll);
        st=i-d[i];
        dr=i+d[i];
        while(st>=1&&dr<=n&&v[st]==v[dr])
        {
            ++d[i];
            --st;
            ++dr;
        }
        sol+=d[i];
        if(i+d[i]-1>r)
        {
            r=i+d[i]-1;
            c=i;
        }
    }
    g<<sol;
    return 0;
}