Mai intai trebuie sa te autentifici.

Cod sursa(job #1004920)

Utilizator assa98Andrei Stanciu assa98 Data 3 octombrie 2013 20:06:08
Problema Reguli Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>
using namespace std;    


const int MAX_N=500100;

long long 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("%lld",&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;
}