Pagini recente » Cod sursa (job #453459) | Cod sursa (job #492370) | Cod sursa (job #196803) | Cod sursa (job #2130485) | Cod sursa (job #1088857)
#include <fstream>
using namespace std ;
const int NMAX = 100010;
ifstream cin("numarare.in") ;
ofstream cout("numarare.out") ;
int V[NMAX], S[NMAX], N, p, sol;
int main() {
cin >> N >> V[1] ;
for(int i = 2 ; i <= N ; ++ i)
{
cin >> V[i] ;
V[i-1] = V[i-1] - V[i] ;
}
p = 1 ;
-- N ;
for(int i = 1 ; i <= N ; ++ i)
{
if(i < p + S[p])
S[i] = min(S[2*p-i], p + S[p] - i) ;
if(i + S[i] >= p + S[p])
{
p = i ;
while ( i - S[i] - 1 >= 1 && i + S[i] + 1 <= N && V[i -S[i] - 1] == V[i + S[i] + 1])
++ S[i];
}
}
sol = N ;
for(int i = 1 ; i <= N; ++ i)
sol = sol + S[i] ;
cout << sol ;
cin.close() ;
cout.close() ;
return 0;
}