Pagini recente » Cod sursa (job #1641684) | Solutii Autumn Warmup, Runda 3 | Cod sursa (job #921567) | Cod sursa (job #117344) | Cod sursa (job #1004906)
#include <cstdio>
using namespace std;
const int MAX_N=500100;
int v[MAX_N];
int pi[MAX_N];
int n;
void prefix() {
pi[1]=0;
int p=0;
for(int i=2;i<=n;i++) {
while(p&&v[p+1]!=v[i]) {
p=pi[p];
}
if(v[p+1]==v[i]) {
p++;
}
pi[i]=p;
}
}
int main() {
freopen("reguli.in","r",stdin);
freopen("reguli.out","w",stdout);
scanf("%d",&n);
n--;
for(int i=0;i<=n;i++) {
scanf("%d",&v[i]);
}
for(int i=n;i>=1;i--) {
v[i]=v[i]-v[i-1];
}
prefix();
//for(int i=1;
int l=n;
while(pi[l]!=0) {
l=pi[l];
}
if(n==l) {
printf("%d",n);
}
else {
printf("%d",(n-l)-pi[n-l]);
}
return 0;
}