Cod sursa(job #2312532)

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