Pagini recente » Cod sursa (job #86424) | Cod sursa (job #347097) | Cod sursa (job #2543053) | Cod sursa (job #1173458) | Cod sursa (job #1512502)
#include <stdio.h>
#define MAXN 100000
int v[MAXN], d[MAXN];
int main(){
FILE *in = fopen("numarare.in", "r");
int n, i, x, y;
fscanf(in, "%d%d", &n, &x);
for(i = 1; i < n; i++){
fscanf(in, "%d", &y);
v[i - 1] = y - x;
x = y;
}
int p, dr = -1, j, rez = 0;
for(i = 0; i < n - 1; i++){
if(i > dr)
j = 0;
else
j = d[p - (i - p)];
while(i - j >= 0 && i + j < n - 1 && v[i - j] == v[i + j])
j++;
d[i] = j;
if(i + j > dr){
p = i;
dr = i + j;
}
rez += d[i];
}
FILE *out = fopen("numarare.out", "w");
fprintf(out, "%d", rez);
fclose(out);
return 0;
}