Pagini recente » Monitorul de evaluare | Istoria paginii utilizator/victra2001 | Cod sursa (job #2013214) | Rating Verba Robert (Rotbert) | Cod sursa (job #214340)
Cod sursa(job #214340)
#include <fstream>
#define MAX 1000010
using namespace std;
ifstream fin ("reguli.in");
ofstream fout ("reguli.out");
long long sir[MAX],rez[MAX];
long long n,x,y,mx=1;
void citire()
{
fin>>n;
fin>>x;
for (int i=1;i<n;i++)
{
fin>>y;
sir[i]=y-x;
x=y;
}
n--;
}
inline int maxx(int a,int b)
{
return a>b?a:b;
}
void kmp()
{
rez[1]=0;
long long p=0;
for (int i=2;i<=n;i++)
{
while (p && sir[p+1]!=sir[i])
p=rez[p];
if (sir[p+1]==sir[i])
p++;
if (p==0)
mx=i;
rez[i]=p;
if (rez[i]<rez[i-1])
mx=maxx(mx,rez[i-1]);
}
}
void afisare()
{
fout<<mx<<"\n";
for (int j=1;j<=mx;j++)
fout<<sir[j]<<"\n";
}
int main ()
{
citire();
kmp();
afisare();
return 0;
}