Pagini recente » Cod sursa (job #772198) | Cod sursa (job #2223433) | Cod sursa (job #2713792) | Monitorul de evaluare | Cod sursa (job #1685420)
#include <fstream>
#define nMax 100002
using namespace std;
ifstream fin("numarare.in");
ofstream fout("numarare.out");
int n;
int v[nMax], dp[nMax];
long long Sol;
void read()
{
fin>>n;
for(int i=1;i<=n;i++)
fin>>v[i];
}
void solve()
{
int C=0, R=0;
for(int i=1;i<=n;i++)
{
if(i<R)
dp[i]=min((R-i), dp[C-(i-C)]);
dp[i]=max(dp[i], 1);
while(v[i-dp[i]] + v[i+dp[i]+1]==v[i]+v[i+1] && i-dp[i]>=1 && i+dp[i]+1<=n)
dp[i]++;
if(i+dp[i]>R)
{
C=i;
R=i+dp[i];
}
Sol+=dp[i];
}
Sol--;
}
void write()
{
fout<<Sol;
}
int main()
{
read();
solve();
write();
return 0;
}