Pagini recente » Cod sursa (job #61344) | Cod sursa (job #2274876) | Cod sursa (job #2057708) | Cod sursa (job #2010125) | Cod sursa (job #2041514)
#include <fstream>
#define VAL 100005
#define INF 1000000000
using namespace std;
ifstream fin("numarare.in");
ofstream fout("numarare.out");
int N, i, j;
int X[VAL], mx;
int P[VAL], id;
long long ANS;
int main()
{
fin >> N;
for (i=1; i<=N; i++)
{
fin >> X[i];
X[i-1]=X[i]-X[i-1];
}
X[0]=INF;
X[N]=-INF;
ANS=P[1]=id=mx=1;
for (i=2; i<N; i++)
{
if (i<=mx)
P[i]=min(P[2*id-i], mx-i);
else
P[i]=1;
while (X[i+P[i]]==X[i-P[i]])
P[i]++;
if (i+P[i]-1>mx)
{
id=i;
mx=i+P[i]-1;
}
ANS+=P[i];
}
fout << ANS << '\n';
fin.close();
fout.close();
return 0;
}