Cod sursa(job #2525516)
Utilizator | Andrei Bazavan andreibazavan | Data | 17 ianuarie 2020 15:23:31 |
---|---|---|---|
Problema | Numarare | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.6 kb |
#include<bits/stdc++.h>
using namespace std;
ifstream fin("numarare.in");
ofstream fout("numarare.out");
int v[200005],d[200005],n,r,c;
long long sol;
int main(){
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>v[i];
v[i-1]-=v[i];
}
for(int i=1;i<n;i++)
{
int poz=c*2-i;
if(i<=r)
d[i]=min(d[poz],r-i+1);
while(i-d[i]>=1 && i+d[i]<n && v[i-d[i]]==v[i+d[i]])
d[i]++;
if(i+d[i]-1>r)
{
c=i;
r=i+d[i]-1;
}
sol+=d[i];
}
fout<<sol<<'\n';
return 0;
}