Cod sursa(job #1311218)
| Utilizator | Data | 7 ianuarie 2015 20:48:45 | |
|---|---|---|---|
| Problema | Reguli | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.42 kb |
# include <bits/stdc++.h>
using namespace std;
ifstream fi("reguli.in");
ofstream fo("reguli.out");
const int nmax = 5e5 + 5;
int v[nmax];
int s[nmax];
int main(void)
{
int n,x,y;
fi>>n>>y;
for (int i=1;i<n;++i) fi>>x,s[i]=y-x,y=x;
for (int i=2,k=0;i<n;++i)
{
while (k && s[k+1] != s[i]) k = v[k];
k += (s[k+1] == s[i]);v[i] = k;
}
return fo << (n - v[n]) << '\n',0;
}
